summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-09-09 17:38:40 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2010-09-09 17:38:40 +0200
commitc3b816166f0b2e44b4035209713b67842d2da546 (patch)
treeb3d90d1379c6c5b014ac096b98ccd3fd6c600c00 /src/shared/cplusplus
parent52786e1e3961393ac8b83341f3c6425235945441 (diff)
downloadqt-creator-c3b816166f0b2e44b4035209713b67842d2da546.tar.gz
Fixed parsing of sizeof expressions.
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/Parser.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index e2fd3a67df..6c5598d7b4 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -4493,7 +4493,10 @@ bool Parser::parseUnaryExpression(ExpressionAST *&node)
if (LA() == T_LPAREN) {
unsigned lparen_token = consumeToken();
- if (parseTypeId(ast->expression) && LA() == T_RPAREN) {
+ const bool blocked = blockErrors(true);
+ const bool hasTypeId = parseTypeId(ast->expression);
+ (void) blockErrors(blocked);
+ if (hasTypeId && LA() == T_RPAREN) {
ast->lparen_token = lparen_token;
ast->rparen_token = consumeToken();
node = ast;
@@ -4503,7 +4506,7 @@ bool Parser::parseUnaryExpression(ExpressionAST *&node)
}
}
- parsePrimaryExpression(ast->expression);
+ parseUnaryExpression(ast->expression);
node = ast;
return true;