summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/instantiate-complete.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Implement explicit instantiations of member classes of class templates, e.g.,Douglas Gregor2009-05-141-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | template<typename T> struct X { struct Inner; }; template struct X<int>::Inner; This change is larger than it looks because it also fixes some a problem with nested-name-specifiers and tags. We weren't requiring the DeclContext associated with the scope specifier of a tag to be complete. Therefore, when looking for something like "struct X<int>::Inner", we weren't instantiating X<int>. This, naturally, uncovered a problem with member pointers, where we were requiring the left-hand side of a member pointer access expression (e.g., x->*) to be a complete type. However, this is wrong: the semantics of this expression does not require a complete type (EDG agrees). Stuart vouched for me. Blame him. llvm-svn: 71756
* Make sure to use RequireCompleteType rather than testing forDouglas Gregor2009-03-241-0/+47
incomplete types. RequireCompleteType is needed when the type may be completed by instantiating a template. llvm-svn: 67643
OpenPOWER on IntegriCloud