aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2018-10-09 11:59:43 +0200
committerNikolai Kosjar <nikolai.kosjar@qt.io>2018-10-11 06:56:43 +0000
commitde975aca4f08141b1c6475e58f5cfa316fdd1350 (patch)
tree5258a2cf28c0327e485e7a21c579faf615c26d65 /src/libs/3rdparty
parent7710a35ed67353e741ee13548de40d97b7f5e658 (diff)
C++: Fix parsing enum specifier
The enum name has to be an identifier. For the example in the referenced report it was a destructor, which violated invariants in the lookup code. Fixes: QTCREATORBUG-20952 Change-Id: Ib8c9c23d6e001368c11c6a4b80c4295559786823 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Diffstat (limited to 'src/libs/3rdparty')
-rw-r--r--src/libs/3rdparty/cplusplus/Parser.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp
index 05ac110245..c2198b6578 100644
--- a/src/libs/3rdparty/cplusplus/Parser.cpp
+++ b/src/libs/3rdparty/cplusplus/Parser.cpp
@@ -1834,7 +1834,11 @@ bool Parser::parseEnumSpecifier(SpecifierListAST *&node)
error(cursor(), "expected identifier before '%s'", tok().spell());
return false;
}
- parseName(ast->name);
+
+ if (LA() == T_IDENTIFIER)
+ parseName(ast->name);
+ else
+ return false;
if (_languageFeatures.cxx11Enabled && LA() == T_COLON) {
ast->colon_token = consumeToken();