forked from qt-creator/qt-creator
Check the lookahead token before to start the parse of core-postfix expressions.
This commit is contained in:
@@ -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)
|
||||||
|
Reference in New Issue
Block a user