llvm-project/clang/lib/AST
Douglas Gregor 120635bc9c Fix speculative parsing of dependent template names in
nested-name-specifiers so that they don't gobble the template name (or
operator-function-id) unless there is also a
template-argument-list. For example, given

  T::template apply

we would previously consume both "template" and "apply" as part of
parsing the nested-name-specifier, then error when we see that there
is no "<" starting a template argument list. Now, we parse such
constructs tentatively, and back off if the "<" is not present. This
allows us to parse dependent template names as one would use them for,
e.g., template template parameters:

  template<typename T, template<class> class X = T::template apply>
    struct MetaSomething;

Also, test default arguments for template template parameters.

llvm-svn: 86841
2009-11-11 16:39:34 +00:00
..
APValue.cpp Remove tabs, and whitespace cleanups. 2009-09-09 15:08:12 +00:00
ASTConsumer.cpp Push DeclGroup much farther throughout the compiler. Now the various 2009-03-29 16:50:03 +00:00
ASTContext.cpp Introduce a new representation for template template 2009-11-11 01:00:40 +00:00
CMakeLists.txt Move all of the type-printing logic to its own C++ source file 2009-11-10 00:39:07 +00:00
CXXInheritance.cpp Canonicality is a property of qualified types, not unqualified types. 2009-10-22 20:10:53 +00:00
Decl.cpp Implement proper linkage for explicit instantiation declarations of 2009-10-27 23:26:40 +00:00
DeclBase.cpp Remove OriginalTypeParmDecl; the original type is the one specified 2009-10-23 21:48:59 +00:00
DeclCXX.cpp Make sure isCopyAssignment is only true for actual copy assignment operators, 2009-11-07 00:02:45 +00:00
DeclGroup.cpp Remove the serialization code that predates precompiled 2009-04-22 21:45:53 +00:00
DeclObjC.cpp Property declared in continuation class can only be used to 2009-11-02 22:45:15 +00:00
DeclPrinter.cpp Rename FunctionDecl::isInline/setInline to 2009-10-27 21:01:01 +00:00
DeclTemplate.cpp Introduce a new representation for template template 2009-11-11 01:00:40 +00:00
DeclarationName.cpp Give DeclarationName's operator< a more predictable, useful ordering 2009-11-04 22:24:30 +00:00
Expr.cpp Refine volatile handling, specifically, we must have the canonical 2009-11-03 23:25:48 +00:00
ExprCXX.cpp Track source information for template arguments and template specialization 2009-10-29 08:12:44 +00:00
ExprConstant.cpp Added support for static variables which require 2009-11-05 18:03:03 +00:00
InheritViz.cpp Remove tabs, and whitespace cleanups. 2009-09-09 15:08:12 +00:00
Makefile Installation of Clang libraries and headers, from Axel Naumann! 2009-10-08 22:15:31 +00:00
NestedNameSpecifier.cpp Move all of the type-printing logic to its own C++ source file 2009-11-10 00:39:07 +00:00
ParentMap.cpp Remove tabs, and whitespace cleanups. 2009-09-09 15:08:12 +00:00
RecordLayoutBuilder.cpp Fixup spacing. 2009-11-11 02:49:00 +00:00
RecordLayoutBuilder.h Refine layout for indirect virtual base classes. 2009-11-05 04:02:15 +00:00
Stmt.cpp Move clients to use IdentifierInfo::getNameStart() instead of getName() 2009-10-18 20:26:12 +00:00
StmtDumper.cpp Move clients to use IdentifierInfo::getNameStart() instead of getName() 2009-10-18 20:26:12 +00:00
StmtIterator.cpp Remove tabs, and whitespace cleanups. 2009-09-09 15:08:12 +00:00
StmtPrinter.cpp Eliminate QualifiedDeclRefExpr, which captured the notion of a 2009-10-23 18:54:35 +00:00
StmtProfile.cpp Introduce a new representation for template template 2009-11-11 01:00:40 +00:00
StmtViz.cpp Remove tabs, and whitespace cleanups. 2009-09-09 15:08:12 +00:00
TemplateBase.cpp Fix speculative parsing of dependent template names in 2009-11-11 16:39:34 +00:00
TemplateName.cpp Implement support for parsing dependent template-ids that refer to 2009-11-04 00:56:37 +00:00
Type.cpp Introduce a new representation for template template 2009-11-11 01:00:40 +00:00
TypeLoc.cpp Suppress build warning. 2009-10-19 01:20:42 +00:00
TypePrinter.cpp Introduce a new representation for template template 2009-11-11 01:00:40 +00:00