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