]> granicus.if.org Git - clang/commit
Improve parsing of template arguments to lay the foundation for
authorDouglas Gregor <dgregor@apple.com>
Tue, 10 Nov 2009 19:49:08 +0000 (19:49 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 10 Nov 2009 19:49:08 +0000 (19:49 +0000)
commit314b97f8c564b465af605efaee23f91ec18a982b
treee0fddf8801f5e22bef57f935a3211ef8ceccbf97
parent4770a4a3d4e55fa8ad691bf4c046fae519120a09
Improve parsing of template arguments to lay the foundation for
handling template template parameters properly. This refactoring:

  - Parses template template arguments as id-expressions, representing
    the result of the parse as a template name (Action::TemplateTy)
    rather than as an expression (lame!).

  - Represents all parsed template arguments via a new parser-specific
    type, ParsedTemplateArgument, which stores the kind of template
    argument (type, non-type, template) along with all of the source
    information about the template argument. This replaces an ad hoc
    set of 3 vectors (one for a void*, which was either a type or an
    expression; one for a bit telling whether the first was a type or
    an expression; and one for a single source location pointing at
    the template argument).

  - Moves TemplateIdAnnotation into the new Parse/Template.h. It never
    belonged in the Basic library anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86708 91177308-0d34-0410-b5e6-96231b3b80d8
17 files changed:
include/clang/Lex/Token.h
include/clang/Parse/Action.h
include/clang/Parse/DeclSpec.h
include/clang/Parse/Ownership.h
include/clang/Parse/Parser.h
include/clang/Parse/Template.h [new file with mode: 0644]
lib/Parse/DeclSpec.cpp
lib/Parse/ParseDecl.cpp
lib/Parse/ParseDeclCXX.cpp
lib/Parse/ParseExprCXX.cpp
lib/Parse/ParseTemplate.cpp
lib/Parse/Parser.cpp
lib/Sema/Sema.h
lib/Sema/SemaDecl.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/SemaTemplate.cpp