llvm-project/clang/lib/Parse
Douglas Gregor dc572a3266 Improve the representation of template names in the AST. This
representation handles the various ways in which one can name a
template, including unqualified references ("vector"), qualified
references ("std::vector"), and dependent template names
("MetaFun::template apply").

One immediate effect of this change is that the representation of
nested-name-specifiers in type names for class template
specializations (e.g., std::vector<int>) is more accurate. Rather than
representing std::vector<int> as

  std::(vector<int>)

we represent it as

  (std::vector)<int>

which more closely follows the C++ grammar. 

Additionally, templates are no longer represented as declarations
(DeclPtrTy) in Parse-Sema interactions. Instead, I've introduced a new
OpaquePtr type (TemplateTy) that holds the representation of a
TemplateName. This will simplify the handling of dependent
template-names, once we get there.

llvm-svn: 68074
2009-03-30 22:58:21 +00:00
..
AstGuard.h Add a switch that allows disabling the smart pointers. 2009-01-22 17:31:11 +00:00
AttributeList.cpp Besides the warning, issue unsupported diagnostics in 2009-03-27 18:38:55 +00:00
CMakeLists.txt Build system changes to use TableGen to generate the various 2009-03-16 23:06:59 +00:00
DeclSpec.cpp Introduce a new OpaquePtr<N> struct type, which is a simple POD wrapper for a 2009-03-28 19:18:32 +00:00
ExtensionRAIIObject.h move library-specific diagnostic headers into library private dirs. Reduce 2009-01-29 05:15:15 +00:00
Makefile Build system changes to use TableGen to generate the various 2009-03-16 23:06:59 +00:00
MinimalAction.cpp Improve the representation of template names in the AST. This 2009-03-30 22:58:21 +00:00
ParseCXXInlineMethods.cpp Push DeclGroup much farther throughout the compiler. Now the various 2009-03-29 16:50:03 +00:00
ParseDecl.cpp hoist some code for handling objc foreach construct out of Declaration processing 2009-03-29 17:27:48 +00:00
ParseDeclCXX.cpp Improve the representation of template names in the AST. This 2009-03-30 22:58:21 +00:00
ParseExpr.cpp Initial implementation of parsing, semantic analysis, and template 2009-03-27 23:10:48 +00:00
ParseExprCXX.cpp Improve the representation of template names in the AST. This 2009-03-30 22:58:21 +00:00
ParseInit.cpp Make our diagnostics about the obsolete GNU designated-initializer 2009-03-28 00:41:23 +00:00
ParseObjc.cpp Push DeclGroup much farther throughout the compiler. Now the various 2009-03-29 16:50:03 +00:00
ParsePragma.cpp Implement '#pragma unused'. 2009-03-23 22:28:25 +00:00
ParsePragma.h Implement '#pragma unused'. 2009-03-23 22:28:25 +00:00
ParseStmt.cpp minor simplification 2009-03-29 17:29:28 +00:00
ParseTemplate.cpp Improve the representation of template names in the AST. This 2009-03-30 22:58:21 +00:00
ParseTentative.cpp Initial implementation of parsing, semantic analysis, and template 2009-03-27 23:10:48 +00:00
Parser.cpp Improve the representation of template names in the AST. This 2009-03-30 22:58:21 +00:00