CppParser: merge changes from internal repository

This commit is contained in:
Günter Obiltschnig 2021-06-22 13:22:27 +02:00
parent 7f720ee6e1
commit a1a228ff68

View File

@ -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,8 +826,20 @@ const Token* Parser::parseEnum(const Token* pNext)
if (isOperator(pNext, OperatorToken::OP_COLON))
{
pNext = next();
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, "{");
Enum* pEnum = new Enum(name, currentNameSpace(), baseType, flags);