Introduce a new kind of TemplateName that captures a substituted
commit8d9963576c236de4a9981d26f7ab92352be84ee2
authorDouglas Gregor <doug.gregor@gmail.com>
Sat, 15 Jan 2011 06:45:20 +0000 (15 06:45 +0000)
committerDouglas Gregor <doug.gregor@gmail.com>
Sat, 15 Jan 2011 06:45:20 +0000 (15 06:45 +0000)
treea995851490cb0ea0b3e3c15fa55cf50606c68500
parentfa6ed6dfc11c879c02e62454d2f659f66d56b960
Introduce a new kind of TemplateName that captures a substituted
template template parameter pack that cannot be fully expanded because
its enclosing pack expansion could not be expanded. This form of
TemplateName plays the same role as SubstTemplateTypeParmPackType and
SubstNonTypeTemplateParmPackExpr do for template type parameter packs
and non-type template parameter packs, respectively.

We should now handle these multi-level pack expansion substitutions
anywhere. The largest remaining gap in our variadic-templates support
is that we cannot cope with non-type template parameter packs whose
type is a pack expansion.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123521 91177308-0d34-0410-b5e6-96231b3b80d8
14 files changed:
include/clang/AST/ASTContext.h
include/clang/AST/TemplateName.h
include/clang/Basic/DiagnosticSemaKinds.td
include/clang/Serialization/ASTReader.h
lib/AST/ASTContext.cpp
lib/AST/ASTImporter.cpp
lib/AST/ItaniumMangle.cpp
lib/AST/TemplateName.cpp
lib/Sema/SemaTemplateInstantiate.cpp
lib/Sema/TreeTransform.h
lib/Serialization/ASTReader.cpp
lib/Serialization/ASTWriter.cpp
test/CXX/temp/temp.decls/temp.variadic/multi-level-substitution.cpp
tools/libclang/CIndex.cpp