summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
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);