Check the lookahead token before to start the parse of core-postfix expressions.

This commit is contained in:
Roberto Raggi
2009-10-20 15:01:45 +02:00
parent bd7c7e0e55
commit 3ed4a743c0

View File

@@ -3441,13 +3441,21 @@ bool Parser::parseTypeidExpression(ExpressionAST *&node)
bool Parser::parseCorePostfixExpression(ExpressionAST *&node) bool Parser::parseCorePostfixExpression(ExpressionAST *&node)
{ {
DEBUG_THIS_RULE(); DEBUG_THIS_RULE();
if (parseCppCastExpression(node))
return true; switch (LA()) {
else if (parseTypenameCallExpression(node)) case T_DYNAMIC_CAST:
return true; case T_STATIC_CAST:
else if (parseTypeidExpression(node)) case T_REINTERPRET_CAST:
return true; case T_CONST_CAST:
else { return parseCppCastExpression(node);
case T_TYPENAME:
return parseTypenameCallExpression(node);
case T_TYPEID:
return parseTypeidExpression(node);
default: {
unsigned start = cursor(); unsigned start = cursor();
SpecifierAST *type_specifier = 0; SpecifierAST *type_specifier = 0;
bool blocked = blockErrors(true); bool blocked = blockErrors(true);
@@ -3494,7 +3502,8 @@ bool Parser::parseCorePostfixExpression(ExpressionAST *&node)
blockErrors(blocked); blockErrors(blocked);
return parsePrimaryExpression(node); return parsePrimaryExpression(node);
} } // default
} // switch
} }
bool Parser::parsePostfixExpression(ExpressionAST *&node) bool Parser::parsePostfixExpression(ExpressionAST *&node)