From 3ed4a743c0bef8a8bf911c7fd5bce1760e43003a Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Tue, 20 Oct 2009 15:01:45 +0200 Subject: [PATCH] Check the lookahead token before to start the parse of core-postfix expressions. --- src/shared/cplusplus/Parser.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 4948a773aa5..b7507c45cee 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -3441,13 +3441,21 @@ bool Parser::parseTypeidExpression(ExpressionAST *&node) bool Parser::parseCorePostfixExpression(ExpressionAST *&node) { DEBUG_THIS_RULE(); - if (parseCppCastExpression(node)) - return true; - else if (parseTypenameCallExpression(node)) - return true; - else if (parseTypeidExpression(node)) - return true; - else { + + switch (LA()) { + case T_DYNAMIC_CAST: + case T_STATIC_CAST: + case T_REINTERPRET_CAST: + case T_CONST_CAST: + return parseCppCastExpression(node); + + case T_TYPENAME: + return parseTypenameCallExpression(node); + + case T_TYPEID: + return parseTypeidExpression(node); + + default: { unsigned start = cursor(); SpecifierAST *type_specifier = 0; bool blocked = blockErrors(true); @@ -3494,7 +3502,8 @@ bool Parser::parseCorePostfixExpression(ExpressionAST *&node) blockErrors(blocked); return parsePrimaryExpression(node); - } + } // default + } // switch } bool Parser::parsePostfixExpression(ExpressionAST *&node) -- GitLab