summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseCXXInlineMethods.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Alter Action's friend interface to prepare for templated friend declarations andJohn McCall2009-09-111-1/+1
| | | | | | to stop making promises we can't currently keep. llvm-svn: 81571
* Remove tabs, and whitespace cleanups.Mike Stump2009-09-091-9/+9
| | | | llvm-svn: 81346
* Make sure to adjust function template declarations to their templatedDouglas Gregor2009-08-241-1/+1
| | | | | | | declarations (e.g., FunctionTemplateDecl -> CXXConstructorDecl) before performing semantic analysis on the declarations. Fixes PR4761. llvm-svn: 79911
* Implement delayed parsing for member function templates. Fixes PR4608.Douglas Gregor2009-08-221-3/+12
| | | | llvm-svn: 79709
* Initial support for parsing and representation of member function templates.Douglas Gregor2009-08-201-3/+9
| | | | llvm-svn: 79570
* Argument-dependent lookup for friend declarations. Add a new decl type,John McCall2009-08-111-1/+1
| | | | | | | | | | | | FriendFunctionDecl, and create instances as appropriate. The design of FriendFunctionDecl is still somewhat up in the air; you can befriend arbitrary types of functions --- methods, constructors, etc. --- and it's not clear that this representation captures that very well. We'll have a better picture when we start consuming this data in access control. llvm-svn: 78653
* First pass at friend semantics.John McCall2009-08-061-1/+5
| | | | llvm-svn: 78274
* Fix the parsing of default arguments for inline member function Eli Friedman2009-07-221-0/+2
| | | | | | | | definitions. I'm not very familiar with this code, so please review. llvm-svn: 76796
* Patch to accomodate Doug's comment on defaultFariborz Jahanian2009-07-211-1/+1
| | | | | | destruction of base/members for each destructor AST. llvm-svn: 76663
* Added ASTs to destructor decl AST for default destruction of object'sFariborz Jahanian2009-07-151-1/+1
| | | | | | base/members. llvm-svn: 75849
* Build AST for default ctor-initializer when constructor hasFariborz Jahanian2009-07-141-2/+1
| | | | | | out of line definition. llvm-svn: 75668
* Patch to build AST for ctor's initializer list according toFariborz Jahanian2009-07-141-0/+4
| | | | | | semantics of order of construction [class.init]. llvm-svn: 75649
* Reimplement much of the way that we track nested classes in theDouglas Gregor2009-05-271-11/+36
| | | | | | | | | | | | | parser. Rather than placing all of the delayed member function declarations and inline definitions into a single bucket corresponding to the top-level class, we instead mirror the nesting structure of the nested classes and place the delayed member functions into their appropriate place. Then, when we actually parse the delayed member function declarations, set up the scope stack the same way as it was when we originally saw the declaration, so that we can find, e.g., template parameters that are in scope. llvm-svn: 72502
* The mysterious bug turns out to be an incredibly bone-headed mistake.Sebastian Redl2009-04-261-1/+1
| | | | llvm-svn: 70160
* Implement function-try-blocks. However, there's a very subtle bug that I ↵Sebastian Redl2009-04-261-7/+20
| | | | | | can't track down. llvm-svn: 70155
* Push DeclGroup much farther throughout the compiler. Now the variousChris Lattner2009-03-291-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | productions (except the already broken ObjC cases like @class X,Y;) in the parser that can produce more than one Decl return a DeclGroup instead of a Decl, etc. This allows elimination of the Decl::NextDeclarator field, and exposes various clients that should look at all decls in a group, but which were only looking at one (such as the dumper, printer, etc). These have been fixed. Still TODO: 1) there are some FIXME's in the code about potentially using DeclGroup for better location info. 2) ParseObjCAtDirectives should return a DeclGroup due to @class etc. 3) I'm not sure what is going on with StmtIterator.cpp, or if it can be radically simplified now. 4) I put a truly horrible hack in ParseTemplate.cpp. I plan to bring up #3/4 on the mailing list, but don't plan to tackle #1/2 in the short term. llvm-svn: 68002
* Introduce a new OpaquePtr<N> struct type, which is a simple POD wrapper for aChris Lattner2009-03-281-2/+3
| | | | | | | | | | | | | | | | | | | | pointer. Its purpose in life is to be a glorified void*, but which does not implicitly convert to void* or other OpaquePtr's with a different UID. Introduce Action::DeclPtrTy which is a typedef for OpaquePtr<0>. Change the entire parser/sema interface to use DeclPtrTy instead of DeclTy*. This makes the C++ compiler enforce that these aren't convertible to other opaque types. We should also convert ExprTy, StmtTy, TypeTy, AttrTy, BaseTy, etc, but I don't plan to do that in the short term. The one outstanding known problem with this patch is that we lose the bitmangling optimization where ActionResult<DeclPtrTy> doesn't know how to bitmangle the success bit into the low bit of DeclPtrTy. I will rectify this with a subsequent patch. llvm-svn: 67952
* Convert a bunch of actions to smart pointers, and also bring ↵Sebastian Redl2009-03-151-1/+1
| | | | | | PrintParserCallbacks a bit more in line with reality. llvm-svn: 67029
* Simplify the interface to ParseFunctionStatementBody to not take Chris Lattner2009-03-051-2/+2
| | | | | | | locations that are the current tok loc. Note that inline C++ methods have a big fixme that could cause a crash. llvm-svn: 66113
* move library-specific diagnostic headers into library private dirs. ReduceChris Lattner2009-01-291-1/+1
| | | | | | redundant #includes. Patch by Anders Johnsen! llvm-svn: 63271
* Split the single monolithic DiagnosticKinds.def file into oneChris Lattner2009-01-271-1/+1
| | | | | | | | | .def file for each library. This means that adding a diagnostic to sema doesn't require all the other libraries to be rebuilt. Patch by Anders Johnsen! llvm-svn: 63111
* When we see a reference to a struct, class, or union like "struct X"Douglas Gregor2009-01-091-1/+2
| | | | | | | | | | | | | | | | that is neither a definition nor a forward declaration and where X has not yet been declared as a tag, introduce a declaration into the appropriate scope (which is likely *not* to be the current scope). The rules for the placement of the declaration differ slightly in C and C++, so we implement both and test the various corner cases. This implementation isn't 100% correct due to some lingering issues with the function prototype scope (for a function parameter list) not being the same scope as the scope of the function definition. Testcase is FIXME'd; this probably isn't an important issue. Addresses <rdar://problem/6484805>. llvm-svn: 62014
* Delay parsing of default arguments of member functions until the classDouglas Gregor2008-12-161-17/+71
| | | | | | | | | | is completely defined (C++ [class.mem]p2). Reverse the order in which we process the definitions of member functions specified inline. This way, we'll get diagnostics in the order in which the member functions were declared in the class. llvm-svn: 61103
* Use a scoped object to manage entry/exit from a parser scope rather than ↵Douglas Gregor2008-12-101-4/+2
| | | | | | explicitly calling EnterScope/ExitScope llvm-svn: 60830
* Improve parser error recovery after a constructor initializerDouglas Gregor2008-11-101-2/+22
| | | | llvm-svn: 58989
* Initial implementation of parsing, semantic analysis, and AST-buildingDouglas Gregor2008-11-051-5/+17
| | | | | | | | | | | | | for constructor initializations, e.g., class A { }; class B : public A { int m; public: B() : A(), m(17) { }; }; llvm-svn: 58749
* The only caller of this knows that the current token is l_brace, so this can ↵Argyrios Kyrtzidis2008-06-241-12/+1
| | | | | | be an assert; suggestion by Chris. llvm-svn: 52696
* Add parsing support for C++ classes.Argyrios Kyrtzidis2008-06-241-0/+159
Note that Parser::ParseCXXMemberSpecification is temporarily disabled until the Sema support is in place. Once ParseCXXMemberSpecification is enabled, the Parser/cxx-class.cpp test will pass. llvm-svn: 52694
OpenPOWER on IntegriCloud