From fd4aee7ef67a187e4228155e1a6e4909d302b6f0 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 7 Dec 2009 14:33:13 +0100 Subject: [PATCH] Added diagnostic messages for ctor-initializers. --- src/shared/cplusplus/Parser.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 04c19150f25..8bf2cb670a1 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -1837,6 +1837,8 @@ bool Parser::parseMemInitializerList(MemInitializerListAST *&node) if (parseMemInitializer(*initializer)) initializer = &(*initializer)->next; + else + _translationUnit->error(cursor(), "expected a member initializer"); } return true; } @@ -1847,19 +1849,18 @@ bool Parser::parseMemInitializer(MemInitializerListAST *&node) { DEBUG_THIS_RULE(); NameAST *name = 0; - if (parseName(name) && LA() == T_LPAREN) { - MemInitializerAST *ast = new (_pool) MemInitializerAST; - ast->name = name; - ast->lparen_token = consumeToken(); - parseExpressionList(ast->expression_list); - if (LA() == T_RPAREN) - ast->rparen_token = consumeToken(); + if (! parseName(name)) + return false; - node = new (_pool) MemInitializerListAST; - node->value = ast; - return true; - } - return false; + MemInitializerAST *ast = new (_pool) MemInitializerAST; + ast->name = name; + match(T_LPAREN, &ast->lparen_token); + parseExpressionList(ast->expression_list); + match(T_RPAREN, &ast->rparen_token); + + node = new (_pool) MemInitializerListAST; + node->value = ast; + return true; } bool Parser::parseTypeIdList(ExpressionListAST *&node) -- GitLab