llvm-project/clang/lib/AST
Douglas Gregor e861bac059 Improve support for out-of-line definitions of nested templates and
their members, including member class template, member function
templates, and member classes and functions of member templates.

To actually parse the nested-name-specifiers that qualify the name of
an out-of-line definition of a member template, e.g.,

  template<typename X> template<typename Y>
  X Outer<X>::Inner1<Y>::foo(Y) {
    return X();
  }

we need to look for the template names (e.g., "Inner1") as a member of
the current instantiation (Outer<X>), even before we have entered the
scope of the current instantiation. Since we can't do this in general
(i.e., we should not be looking into all dependent
nested-name-specifiers as if they were the current instantiation), we
rely on the parser to tell us when it is parsing a declaration
specifier sequence, and, therefore, when we should consider the
current scope specifier to be a current instantiation.

Printing of complicated, dependent nested-name-specifiers may be
somewhat broken by this commit; I'll add tests for this issue and fix
the problem (if it still exists) in a subsequent commit.

llvm-svn: 80044
2009-08-25 22:51:20 +00:00
..
APValue.cpp Remove some now-unneeded calls to llvm::errs().flush(). 2009-03-10 18:00:19 +00:00
ASTConsumer.cpp Push DeclGroup much farther throughout the compiler. Now the various 2009-03-29 16:50:03 +00:00
ASTContext.cpp Improve support for out-of-line definitions of nested templates and 2009-08-25 22:51:20 +00:00
CMakeLists.txt Update CMakeLists. 2009-08-19 12:02:15 +00:00
Decl.cpp Remove TypeSpecStartLocation from VarDecl/FunctionDecl/FieldDecl, and use DeclaratorInfo to get this information. 2009-08-21 00:31:54 +00:00
DeclBase.cpp Add a FriendClassDecl type for holding declarations of friend types in 2009-08-11 21:13:21 +00:00
DeclCXX.cpp Skip over bases/fields with dependent types. 2009-08-25 16:37:49 +00:00
DeclGroup.cpp Remove the serialization code that predates precompiled 2009-04-22 21:45:53 +00:00
DeclObjC.cpp Introduce DeclaratorDecl and pass DeclaratorInfo through the Decl/Sema interfaces. 2009-08-19 01:27:57 +00:00
DeclPrinter.cpp Replace cerr with errs(). 2009-08-23 12:08:50 +00:00
DeclTemplate.cpp Remove TypeSpecStartLocation from VarDecl/FunctionDecl/FieldDecl, and use DeclaratorInfo to get this information. 2009-08-21 00:31:54 +00:00
DeclarationName.cpp Introduce the canonical type smart pointers, and use them in a few places to 2009-08-05 05:36:45 +00:00
Expr.cpp Using "ObjCImplicitSetterGetterRefExpr" instead of "ObjCImplctSetterGetterRefExpr". 2009-08-20 17:02:02 +00:00
ExprCXX.cpp Implement __is_empty. Patch by Sean Hunt. 2009-08-15 21:55:26 +00:00
ExprConstant.cpp Change uses of: 2009-07-29 21:53:49 +00:00
InheritViz.cpp Update clang for raw_fd_ostream no longer requiring F_Force. 2009-08-25 15:36:09 +00:00
Makefile Don't install Clang libraries. 2009-08-23 05:02:18 +00:00
NestedNameSpecifier.cpp Key decisions about 'bool' vs '_Bool' to be based on a new flag in langoptions. 2009-06-30 01:26:17 +00:00
ParentMap.cpp Add ParentMap:getParentIgnoreParens(). 2009-05-11 19:49:27 +00:00
RecordLayoutBuilder.cpp Refine vbase offset calculations. WIP. 2009-08-16 19:04:13 +00:00
RecordLayoutBuilder.h Refine vbase offset calculations. WIP. 2009-08-16 19:04:13 +00:00
Stmt.cpp Fix build of clang with gcc-4.4: #include <cstdio> was missing. 2009-08-24 13:25:12 +00:00
StmtDumper.cpp Add CK_NullToMemberPointer and CK_BaseToDerivedMemberPointer cast kinds. Make -ast-dump print out the cast kinds of cast expressions. 2009-08-22 23:33:40 +00:00
StmtIterator.cpp When evaluating a VarDecl as a constant or determining whether it is 2009-05-26 18:54:04 +00:00
StmtPrinter.cpp Replace cerr with errs(). 2009-08-23 12:08:50 +00:00
StmtProfile.cpp Using "ObjCImplicitSetterGetterRefExpr" instead of "ObjCImplctSetterGetterRefExpr". 2009-08-20 17:02:02 +00:00
StmtViz.cpp cerr -> errs. 2009-08-23 08:52:09 +00:00
TemplateName.cpp [llvm up] 2009-07-29 18:26:50 +00:00
Type.cpp Canonicalize dependent extended vector types. 2009-07-31 03:54:25 +00:00
TypeLoc.cpp Introduce DeclaratorInfo and TypeLoc, intended to be used for storing and reading source information for types. 2009-08-19 01:27:32 +00:00