summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-05-21 21:38:12 +0000
committerDouglas Gregor <dgregor@apple.com>2009-05-21 21:38:12 +0000
commitc2607b9a08752197a10af168a60222899f02174b (patch)
tree055dcef23286a3c4f103b0cde3f357809e8498d7 /clang/lib/Sema/SemaTemplateInstantiateExpr.cpp
parent122660eb190b56841d88d86a94fe1331a5540da1 (diff)
downloadbcm5719-llvm-c2607b9a08752197a10af168a60222899f02174b.tar.gz
bcm5719-llvm-c2607b9a08752197a10af168a60222899f02174b.zip
Template instantiation for initializer lists
llvm-svn: 72229
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiateExpr.cpp')
-rw-r--r--clang/lib/Sema/SemaTemplateInstantiateExpr.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp b/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp
index 8cd60edb671..283b0d35a20 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp
@@ -60,7 +60,7 @@ namespace {
OwningExprResult VisitShuffleVectorExpr(ShuffleVectorExpr *E);
OwningExprResult VisitChooseExpr(ChooseExpr *E);
OwningExprResult VisitVAArgExpr(VAArgExpr *E);
- // FIXME: InitListExpr
+ OwningExprResult VisitInitListExpr(InitListExpr *E);
// FIXME: DesignatedInitExpr
// FIXME: ImplicitValueInitExpr
// FIXME: ExtVectorElementExpr
@@ -581,6 +581,20 @@ Sema::OwningExprResult TemplateExprInstantiator::VisitVAArgExpr(VAArgExpr *E) {
}
Sema::OwningExprResult
+TemplateExprInstantiator::VisitInitListExpr(InitListExpr *E) {
+ ExprVector Inits(SemaRef);
+ for (unsigned I = 0, N = E->getNumInits(); I != N; ++I) {
+ OwningExprResult Init = Visit(E->getInit(I));
+ if (Init.isInvalid())
+ return SemaRef.ExprError();
+ Inits.push_back(Init.takeAs<Expr>());
+ }
+
+ return SemaRef.ActOnInitList(E->getLBraceLoc(), move_arg(Inits),
+ E->getRBraceLoc());
+}
+
+Sema::OwningExprResult
TemplateExprInstantiator::VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr *E) {
bool isSizeOf = E->isSizeOf();
OpenPOWER on IntegriCloud