llvm-project/clang/lib
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
..
AST Improve support for out-of-line definitions of nested templates and 2009-08-25 22:51:20 +00:00
Analysis Fix crash reported in <rdar://problem/7124210> by "back-porting" some of the 2009-08-25 20:51:30 +00:00
Basic Remove TargetInfo::getTargetPrefix(). 2009-08-24 09:54:37 +00:00
CodeGen Emit conversion functions correctly. 2009-08-25 13:14:46 +00:00
Driver PR4766: Don't pass -static to 'as' on x86_64 on Darwin. 2009-08-24 22:26:16 +00:00
Frontend Update clang for raw_fd_ostream no longer requiring F_Force. 2009-08-25 15:36:09 +00:00
Headers CMake: Improve installation of Clang 2009-08-23 05:28:29 +00:00
Index Don't install Clang libraries. 2009-08-23 05:02:18 +00:00
Lex Replace cerr with errs(). 2009-08-23 12:08:50 +00:00
Parse Improve support for out-of-line definitions of nested templates and 2009-08-25 22:51:20 +00:00
Rewrite Don't install Clang libraries. 2009-08-23 05:02:18 +00:00
Sema Improve support for out-of-line definitions of nested templates and 2009-08-25 22:51:20 +00:00
CMakeLists.txt Introduce the 'Index' library. 2009-07-05 22:22:19 +00:00
Makefile Introduce the 'Index' library. 2009-07-05 22:22:19 +00:00