diff options
| author | Douglas Gregor <dgregor@apple.com> | 2009-05-21 21:38:12 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2009-05-21 21:38:12 +0000 |
| commit | c2607b9a08752197a10af168a60222899f02174b (patch) | |
| tree | 055dcef23286a3c4f103b0cde3f357809e8498d7 /clang/lib/Sema/SemaTemplateInstantiateExpr.cpp | |
| parent | 122660eb190b56841d88d86a94fe1331a5540da1 (diff) | |
| download | bcm5719-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.cpp | 16 |
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(); |

