summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-02-04 16:31:29 +0100
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-02-07 10:49:02 +0100
commit6ca5f5f5f886449f88d1ff7085f640c46bbc8fb2 (patch)
treeddad79f8d3a8111c63df9c6a7400787e8a345d9f /src/shared/cplusplus/Parser.cpp
parentfd90c3503db076b95f2e97455e9e8fcf9c374a88 (diff)
downloadqt-creator-6ca5f5f5f886449f88d1ff7085f640c46bbc8fb2.tar.gz
Added semantic checks for compound expressions.
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r--src/shared/cplusplus/Parser.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 84a92a186a..864ec779ab 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -3446,6 +3446,14 @@ bool Parser::parsePrimaryExpression(ExpressionAST *&node)
ast->compoundStatement = statement->asCompoundStatement();
match(T_RPAREN, &ast->rparen_token);
node = ast;
+ if (ast->compoundStatement && ast->compoundStatement->statement_list) {
+ // check that the last statement is an expression-statement
+ StatementAST *lastStmt = ast->compoundStatement->statement_list->lastValue();
+ if (!lastStmt || ! ast->asExpressionStatement())
+ _translationUnit->error(cursor(),
+ "expected an expression statement before token `%s'",
+ tok().spell());
+ }
return true;
} else {
return parseNestedExpression(node);