1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 04:07:44 +00:00

LibCpp: Parse enum members with explicit values

This commit is contained in:
Ali Mohammad Pur 2021-07-28 04:15:22 +04:30 committed by Andreas Kling
parent 67a19eaecb
commit 8fefbfd5ac
3 changed files with 16 additions and 4 deletions

View file

@ -1076,7 +1076,13 @@ NonnullRefPtr<EnumDeclaration> Parser::parse_enum_declaration(ASTNode& parent)
enum_decl->set_name(text_of_token(name_token));
consume(Token::Type::LeftCurly);
while (!eof() && peek().type() != Token::Type::RightCurly) {
enum_decl->add_entry(text_of_token(consume(Token::Type::Identifier)));
auto name = text_of_token(consume(Token::Type::Identifier));
RefPtr<Expression> value;
if (peek().type() == Token::Type::Equals) {
consume();
value = parse_expression(enum_decl);
}
enum_decl->add_entry(name, move(value));
if (peek().type() != Token::Type::Comma) {
break;
}