]> granicus.if.org Git - clang/commit
Variadic templates: extend the Expr class with a bit that specifies
authorDouglas Gregor <dgregor@apple.com>
Wed, 15 Dec 2010 01:34:56 +0000 (01:34 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 15 Dec 2010 01:34:56 +0000 (01:34 +0000)
commitbebbe0d9b7568ce43a464286bee49429489ef483
treef46d0fb0c81e0d5b47522d8bc162398b3e9ee7d4
parent8cc246c9a68c783a5b90d2e8b8927521cb3a49b7
Variadic templates: extend the Expr class with a bit that specifies
whether the expression contains an unexpanded parameter pack, in the
same vein as the changes to the Type hierarchy. Compute this bit
within all of the Expr subclasses.

This change required a bunch of reshuffling of dependency
calculations, mainly to consolidate them inside the constructors and
to fuse multiple loops that iterate over arguments to determine type
dependence, value dependence, and (now) containment of unexpanded
parameter packs.

Again, testing is painfully sparse, because all of the diagnostics
will change and it is more important to test the to-be-written visitor
that collects unexpanded parameter packs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121831 91177308-0d34-0410-b5e6-96231b3b80d8
17 files changed:
include/clang/AST/DeclarationName.h
include/clang/AST/Expr.h
include/clang/AST/ExprCXX.h
include/clang/AST/ExprObjC.h
include/clang/AST/Stmt.h
include/clang/AST/TemplateBase.h
lib/AST/DeclarationName.cpp
lib/AST/Expr.cpp
lib/AST/ExprCXX.cpp
lib/AST/TemplateBase.cpp
lib/AST/Type.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/SemaExprCXX.cpp
lib/Sema/SemaOverload.cpp
lib/Sema/SemaStmt.cpp
lib/Sema/SemaTemplate.cpp
test/CXX/temp/temp.decls/temp.variadic/p5.cpp