C++11: More (expression-list) or brace-init-list.

This time in the 'new' expression. Changed it to make
new C(1, abc...) and new C{1, abc}
work.

Change-Id: I7232798fd083b653ee04ef9ede386d6536133e16
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Christian Kamm
2012-09-19 11:26:33 +02:00
committed by hjk
parent 83da5f68be
commit aa645254a2
19 changed files with 19 additions and 177 deletions

View File

@@ -5091,20 +5091,13 @@ bool Parser::parseNewArrayDeclarator(NewArrayDeclaratorListAST *&node)
return true;
}
bool Parser::parseNewInitializer(NewInitializerAST *&node)
bool Parser::parseNewInitializer(ExpressionAST *&node)
{
DEBUG_THIS_RULE();
if (LA() == T_LPAREN) {
unsigned lparen_token = consumeToken();
ExpressionAST *expression = 0;
if (LA() == T_RPAREN || parseExpression(expression)) {
NewInitializerAST *ast = new (_pool) NewInitializerAST;
ast->lparen_token = lparen_token;
ast->expression = expression;
match(T_RPAREN, &ast->rparen_token);
node = ast;
return true;
}
return parseExpressionListParen(node);
} else if (_cxx0xEnabled && LA() == T_LBRACE) {
return parseBracedInitList0x(node);
}
return false;
}