diff options
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r-- | src/shared/cplusplus/Parser.cpp | 8 |
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); |