]> granicus.if.org Git - clang/commit
Introduce a new representation for template template
authorDouglas Gregor <dgregor@apple.com>
Wed, 11 Nov 2009 01:00:40 +0000 (01:00 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 11 Nov 2009 01:00:40 +0000 (01:00 +0000)
commit788cd06cf8e868a67158aafec5de3a1f408d14f3
tree840b782d099e23e673436d5984883230afe3849c
parent5ee0aa715db363a7cdab112627fdd373f477b4df
Introduce a new representation for template template
parameters. Rather than storing them as either declarations (for the
non-dependent case) or expressions (for the dependent case), we now
(always) store them as TemplateNames.

The primary change here is to add a new kind of TemplateArgument,
which stores a TemplateName. However, making that change ripples to
every switch on a TemplateArgument's kind, also affecting
TemplateArgumentLocInfo/TemplateArgumentLoc, default template
arguments for template template parameters, type-checking of template
template arguments, etc.

This change is light on testing. It should fix several pre-existing
problems with template template parameters, such as:
  - the inability to use dependent template names as template template
  arguments
  - template template parameter default arguments cannot be
  instantiation

However, there are enough pieces missing that more implementation is
required before we can adequately test template template parameters.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86777 91177308-0d34-0410-b5e6-96231b3b80d8
23 files changed:
include/clang/AST/DeclTemplate.h
include/clang/AST/TemplateBase.h
include/clang/AST/TypeLoc.h
include/clang/Basic/DiagnosticParseKinds.td
include/clang/Parse/Action.h
include/clang/Parse/Parser.h
lib/AST/ASTContext.cpp
lib/AST/DeclTemplate.cpp
lib/AST/StmtProfile.cpp
lib/AST/TemplateBase.cpp
lib/AST/Type.cpp
lib/AST/TypePrinter.cpp
lib/Frontend/PCHReader.cpp
lib/Frontend/PCHWriter.cpp
lib/Parse/ParseTemplate.cpp
lib/Sema/Sema.h
lib/Sema/SemaLookup.cpp
lib/Sema/SemaTemplate.cpp
lib/Sema/SemaTemplateDeduction.cpp
lib/Sema/SemaTemplateInstantiate.cpp
lib/Sema/TreeTransform.h
test/SemaTemplate/temp_arg_nontype.cpp
test/SemaTemplate/temp_arg_template.cpp