diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2012-02-11 23:51:08 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2012-02-11 23:51:08 +0000 |
commit | 56a04287a1c713870d1e03206cce785e985cc866 (patch) | |
tree | cb416982131036464cc0b9e37a0e30de8c7429e0 /lib/Parse/ParseExprCXX.cpp | |
parent | 15d0ae170c2037815b6383c532253585fcd3d04e (diff) |
Fix parsing new expressions using init lists. Probably still do the wrong thing in cases involving array new.
Show that many cases using initializer list constructors work, in that they parse and pass semantic analysis.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150316 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseExprCXX.cpp')
-rw-r--r-- | lib/Parse/ParseExprCXX.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/Parse/ParseExprCXX.cpp b/lib/Parse/ParseExprCXX.cpp index 3974909cb2..7dee5ecc5a 100644 --- a/lib/Parse/ParseExprCXX.cpp +++ b/lib/Parse/ParseExprCXX.cpp @@ -2182,8 +2182,10 @@ Parser::ParseCXXNewExpression(bool UseGlobal, SourceLocation Start) { } else if (Tok.is(tok::l_brace) && getLang().CPlusPlus0x) { Diag(Tok.getLocation(), diag::warn_cxx98_compat_generalized_initializer_lists); - // FIXME: Have to communicate the init-list to ActOnCXXNew. - ParseBraceInitializer(); + ExprResult InitList = ParseBraceInitializer(); + if (InitList.isInvalid()) + return InitList; + ConstructorArgs.push_back(InitList.take()); } return Actions.ActOnCXXNew(Start, UseGlobal, PlacementLParen, |