summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseExprCXX.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2012-02-12 18:41:05 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2012-02-12 18:41:05 +0000
commitd74dd49065ba4109b8b04209fd197d85857d4281 (patch)
treed69627d08adff9adc4fcc5f27760933bc7782130 /clang/lib/Parse/ParseExprCXX.cpp
parent1a22d2889b234fcb10cad83be231b113e6d3a8b3 (diff)
downloadbcm5719-llvm-d74dd49065ba4109b8b04209fd197d85857d4281.tar.gz
bcm5719-llvm-d74dd49065ba4109b8b04209fd197d85857d4281.zip
Proper initializer list support for new expressions and type construct expressions. Array new still missing.
llvm-svn: 150346
Diffstat (limited to 'clang/lib/Parse/ParseExprCXX.cpp')
-rw-r--r--clang/lib/Parse/ParseExprCXX.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/clang/lib/Parse/ParseExprCXX.cpp b/clang/lib/Parse/ParseExprCXX.cpp
index 7dee5ecc5a8..fe212f4ebcf 100644
--- a/clang/lib/Parse/ParseExprCXX.cpp
+++ b/clang/lib/Parse/ParseExprCXX.cpp
@@ -1151,10 +1151,13 @@ Parser::ParseCXXTypeConstructExpression(const DeclSpec &DS) {
&& "Expected '(' or '{'!");
if (Tok.is(tok::l_brace)) {
-
- // FIXME: Convert to a proper type construct expression.
- return ParseBraceInitializer();
-
+ ExprResult Init = ParseBraceInitializer();
+ if (Init.isInvalid())
+ return Init;
+ Expr *InitList = Init.take();
+ return Actions.ActOnCXXTypeConstructExpr(TypeRep, SourceLocation(),
+ MultiExprArg(&InitList, 1),
+ SourceLocation());
} else {
GreaterThanIsOperatorScope G(GreaterThanIsOperator, true);
OpenPOWER on IntegriCloud