diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 7c36c13a305..6f979152e09 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -2402,10 +2402,18 @@ bool Parser::parseNamespaceAliasDefinition(DeclarationAST *&node) bool Parser::parseDeclarationStatement(StatementAST *&node) { + unsigned start = cursor(); DeclarationAST *declaration = 0; if (! parseBlockDeclaration(declaration)) return false; + if (SimpleDeclarationAST *simpleDeclaration = declaration->asSimpleDeclaration()) { + if (! simpleDeclaration->decl_specifier_seq) { + rewind(start); + return false; + } + } + DeclarationStatementAST *ast = new (_pool) DeclarationStatementAST; ast->declaration = declaration; node = ast;