LibIDL: Attach extended attributes on enums

This commit is contained in:
stelar7 2023-11-05 01:44:12 +01:00 committed by Andreas Kling
parent ea2b733862
commit 19bf42a7e6
3 changed files with 5 additions and 3 deletions

View file

@ -635,12 +635,13 @@ void Parser::parse_namespace(Interface& interface)
consume_whitespace();
}
void Parser::parse_enumeration(Interface& interface)
void Parser::parse_enumeration(HashMap<DeprecatedString, DeprecatedString> extended_attributes, Interface& interface)
{
assert_string("enum"sv);
consume_whitespace();
Enumeration enumeration {};
enumeration.extended_attributes = move(extended_attributes);
auto name = lexer.consume_until([](auto ch) { return is_ascii_space(ch); });
consume_whitespace();
@ -832,7 +833,7 @@ void Parser::parse_non_interface_entities(bool allow_interface, Interface& inter
if (lexer.next_is("dictionary")) {
parse_dictionary(interface);
} else if (lexer.next_is("enum")) {
parse_enumeration(interface);
parse_enumeration(extended_attributes, interface);
} else if (lexer.next_is("typedef")) {
parse_typedef(interface);
} else if (lexer.next_is("interface mixin")) {

View file

@ -42,7 +42,7 @@ private:
void parse_interface(Interface&);
void parse_namespace(Interface&);
void parse_non_interface_entities(bool allow_interface, Interface&);
void parse_enumeration(Interface&);
void parse_enumeration(HashMap<DeprecatedString, DeprecatedString>, Interface&);
void parse_typedef(Interface&);
void parse_interface_mixin(Interface&);
void parse_dictionary(Interface&);

View file

@ -211,6 +211,7 @@ struct Typedef {
struct Enumeration {
OrderedHashTable<DeprecatedString> values;
OrderedHashMap<DeprecatedString, DeprecatedString> translated_cpp_names;
HashMap<DeprecatedString, DeprecatedString> extended_attributes;
DeprecatedString first_member;
bool is_original_definition { true };
};