diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-12-07 14:33:13 +0100 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-12-07 14:51:29 +0100 |
commit | fd4aee7ef67a187e4228155e1a6e4909d302b6f0 (patch) | |
tree | 042078521dbe5b95bd61e2734ba1e88e6928fc17 /src/shared/cplusplus/Parser.cpp | |
parent | 2be825784cf027eaa53881f285995b20a65f4106 (diff) | |
download | qt-creator-fd4aee7ef67a187e4228155e1a6e4909d302b6f0.tar.gz |
Added diagnostic messages for ctor-initializers.
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r-- | src/shared/cplusplus/Parser.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 04c19150f2..8bf2cb670a 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) |