diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-10-09 11:59:43 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-10-11 06:56:43 +0000 |
commit | de975aca4f08141b1c6475e58f5cfa316fdd1350 (patch) | |
tree | 5258a2cf28c0327e485e7a21c579faf615c26d65 /src/libs/3rdparty | |
parent | 7710a35ed67353e741ee13548de40d97b7f5e658 (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.cpp | 6 |
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(); |