From a1a228ff6843a7af9b35adafbfcaec064fe9c04c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnter=20Obiltschnig?= Date: Tue, 22 Jun 2021 13:22:27 +0200 Subject: [PATCH] CppParser: merge changes from internal repository --- CppParser/src/Parser.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/CppParser/src/Parser.cpp b/CppParser/src/Parser.cpp index 810106ea1..dce6ca8c7 100644 --- a/CppParser/src/Parser.cpp +++ b/CppParser/src/Parser.cpp @@ -810,7 +810,7 @@ const Token* Parser::parseEnum(const Token* pNext) int line = _istr.getCurrentLineNumber(); pNext = next(); - if (isKeyword(pNext, IdentifierToken::KW_CLASS)) + if (isKeyword(pNext, IdentifierToken::KW_CLASS) || isKeyword(pNext, IdentifierToken::KW_STRUCT)) { flags = Enum::ENUM_IS_CLASS; pNext = next(); @@ -826,7 +826,19 @@ const Token* Parser::parseEnum(const Token* pNext) if (isOperator(pNext, OperatorToken::OP_COLON)) { pNext = next(); - pNext = parseIdentifier(pNext, baseType); + if (pNext->is(Token::KEYWORD_TOKEN)) + { + while (pNext->is(Token::KEYWORD_TOKEN)) // int, unsigned int, etc. + { + if (!baseType.empty()) baseType += ' '; + baseType += pNext->tokenString(); + pNext = next(); + } + } + else + { + pNext = parseIdentifier(pNext, baseType); + } } expectOperator(pNext, OperatorToken::OP_OPENBRACE, "{");