Added diagnostic messages for ctor-initializers.

This commit is contained in:
Roberto Raggi
2009-12-07 14:33:13 +01:00
parent 2be825784c
commit fd4aee7ef6

View File

@@ -1837,6 +1837,8 @@ bool Parser::parseMemInitializerList(MemInitializerListAST *&node)
if (parseMemInitializer(*initializer)) if (parseMemInitializer(*initializer))
initializer = &(*initializer)->next; initializer = &(*initializer)->next;
else
_translationUnit->error(cursor(), "expected a member initializer");
} }
return true; return true;
} }
@@ -1847,20 +1849,19 @@ bool Parser::parseMemInitializer(MemInitializerListAST *&node)
{ {
DEBUG_THIS_RULE(); DEBUG_THIS_RULE();
NameAST *name = 0; NameAST *name = 0;
if (parseName(name) && LA() == T_LPAREN) { if (! parseName(name))
return false;
MemInitializerAST *ast = new (_pool) MemInitializerAST; MemInitializerAST *ast = new (_pool) MemInitializerAST;
ast->name = name; ast->name = name;
ast->lparen_token = consumeToken(); match(T_LPAREN, &ast->lparen_token);
parseExpressionList(ast->expression_list); parseExpressionList(ast->expression_list);
if (LA() == T_RPAREN) match(T_RPAREN, &ast->rparen_token);
ast->rparen_token = consumeToken();
node = new (_pool) MemInitializerListAST; node = new (_pool) MemInitializerListAST;
node->value = ast; node->value = ast;
return true; return true;
} }
return false;
}
bool Parser::parseTypeIdList(ExpressionListAST *&node) bool Parser::parseTypeIdList(ExpressionListAST *&node)
{ {