mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 07:07:34 +00:00
LibWeb/IDL: Add support for optional enums
This commit is contained in:
parent
2a27f2293a
commit
633ac53c0c
1 changed files with 14 additions and 0 deletions
|
@ -577,6 +577,15 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
||||||
enum_generator.set("js_name.as_string", String::formatted("{}{}_string", enum_generator.get("js_name"), enum_generator.get("js_suffix")));
|
enum_generator.set("js_name.as_string", String::formatted("{}{}_string", enum_generator.get("js_name"), enum_generator.get("js_suffix")));
|
||||||
enum_generator.append(R"~~~(
|
enum_generator.append(R"~~~(
|
||||||
@parameter.type.name@ @cpp_name@ { @parameter.type.name@::@enum.default.cpp_value@ };
|
@parameter.type.name@ @cpp_name@ { @parameter.type.name@::@enum.default.cpp_value@ };
|
||||||
|
)~~~");
|
||||||
|
|
||||||
|
if (optional) {
|
||||||
|
enum_generator.append(R"~~~(
|
||||||
|
if (!@js_name@@js_suffix@.is_undefined()) {
|
||||||
|
)~~~");
|
||||||
|
}
|
||||||
|
|
||||||
|
enum_generator.append(R"~~~(
|
||||||
auto @js_name.as_string@ = TRY(@js_name@@js_suffix@.to_string(global_object));
|
auto @js_name.as_string@ = TRY(@js_name@@js_suffix@.to_string(global_object));
|
||||||
)~~~");
|
)~~~");
|
||||||
auto first = true;
|
auto first = true;
|
||||||
|
@ -596,6 +605,11 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
||||||
@else@
|
@else@
|
||||||
return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::InvalidEnumerationValue, @js_name.as_string@, "@parameter.type.name@");
|
return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::InvalidEnumerationValue, @js_name.as_string@, "@parameter.type.name@");
|
||||||
)~~~");
|
)~~~");
|
||||||
|
|
||||||
|
if (optional) {
|
||||||
|
enum_generator.append(R"~~~(
|
||||||
|
}
|
||||||
|
)~~~");
|
||||||
}
|
}
|
||||||
} else if (interface.dictionaries.contains(parameter.type->name)) {
|
} else if (interface.dictionaries.contains(parameter.type->name)) {
|
||||||
if (optional_default_value.has_value() && optional_default_value != "{}")
|
if (optional_default_value.has_value() && optional_default_value != "{}")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue