mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 06:37:35 +00:00
AK: Make SourceGenerator::fork() infallible
This commit is contained in:
parent
244516142a
commit
0b83717ea2
17 changed files with 142 additions and 142 deletions
|
@ -230,7 +230,7 @@ static DeprecatedString make_input_acceptable_cpp(DeprecatedString const& input)
|
|||
|
||||
static void generate_include_for_iterator(auto& generator, auto& iterator_path)
|
||||
{
|
||||
auto iterator_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto iterator_generator = generator.fork();
|
||||
iterator_generator.set("iterator_class.path", iterator_path);
|
||||
// FIXME: These may or may not exist, because REASONS.
|
||||
iterator_generator.append(R"~~~(
|
||||
|
@ -242,7 +242,7 @@ static void generate_include_for_iterator(auto& generator, auto& iterator_path)
|
|||
|
||||
static void generate_include_for(auto& generator, auto& path)
|
||||
{
|
||||
auto forked_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto forked_generator = generator.fork();
|
||||
auto path_string = path;
|
||||
for (auto& search_path : s_header_search_paths) {
|
||||
if (!path.starts_with(search_path))
|
||||
|
@ -396,7 +396,7 @@ static void generate_to_new_string(SourceGenerator& scoped_generator, ParameterT
|
|||
template<typename ParameterType>
|
||||
static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter, DeprecatedString const& js_name, DeprecatedString const& js_suffix, DeprecatedString const& cpp_name, IDL::Interface const& interface, bool legacy_null_to_empty_string = false, bool optional = false, Optional<DeprecatedString> optional_default_value = {}, bool variadic = false, size_t recursion_depth = 0)
|
||||
{
|
||||
auto scoped_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto scoped_generator = generator.fork();
|
||||
auto acceptable_cpp_name = make_input_acceptable_cpp(cpp_name);
|
||||
scoped_generator.set("cpp_name", acceptable_cpp_name);
|
||||
scoped_generator.set("js_name", js_name);
|
||||
|
@ -708,7 +708,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
}
|
||||
}
|
||||
} else if (interface.enumerations.contains(parameter.type->name())) {
|
||||
auto enum_generator = scoped_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto enum_generator = scoped_generator.fork();
|
||||
auto& enumeration = interface.enumerations.find(parameter.type->name())->value;
|
||||
StringView enum_member_name;
|
||||
if (optional_default_value.has_value()) {
|
||||
|
@ -769,7 +769,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
} else if (interface.dictionaries.contains(parameter.type->name())) {
|
||||
if (optional_default_value.has_value() && optional_default_value != "{}")
|
||||
TODO();
|
||||
auto dictionary_generator = scoped_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto dictionary_generator = scoped_generator.fork();
|
||||
dictionary_generator.append(R"~~~(
|
||||
if (!@js_name@@js_suffix@.is_nullish() && !@js_name@@js_suffix@.is_object())
|
||||
return vm.throw_completion<JS::TypeError>(JS::ErrorType::NotAnObjectOfType, "@parameter.type.name@");
|
||||
|
@ -834,7 +834,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
} else if (interface.callback_functions.contains(parameter.type->name())) {
|
||||
// https://webidl.spec.whatwg.org/#es-callback-function
|
||||
|
||||
auto callback_function_generator = scoped_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto callback_function_generator = scoped_generator.fork();
|
||||
auto& callback_function = interface.callback_functions.find(parameter.type->name())->value;
|
||||
|
||||
if (callback_function.return_type->is_object() && callback_function.return_type->name() == "Promise")
|
||||
|
@ -865,7 +865,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
} else if (parameter.type->name() == "sequence") {
|
||||
// https://webidl.spec.whatwg.org/#es-sequence
|
||||
|
||||
auto sequence_generator = scoped_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto sequence_generator = scoped_generator.fork();
|
||||
auto& parameterized_type = verify_cast<IDL::ParameterizedType>(*parameter.type);
|
||||
sequence_generator.set("recursion_depth", DeprecatedString::number(recursion_depth));
|
||||
|
||||
|
@ -930,7 +930,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
} else if (parameter.type->name() == "record") {
|
||||
// https://webidl.spec.whatwg.org/#es-record
|
||||
|
||||
auto record_generator = scoped_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto record_generator = scoped_generator.fork();
|
||||
auto& parameterized_type = verify_cast<IDL::ParameterizedType>(*parameter.type);
|
||||
record_generator.set("recursion_depth", DeprecatedString::number(recursion_depth));
|
||||
|
||||
|
@ -999,7 +999,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
} else if (is<IDL::UnionType>(*parameter.type)) {
|
||||
// https://webidl.spec.whatwg.org/#es-union
|
||||
|
||||
auto union_generator = scoped_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto union_generator = scoped_generator.fork();
|
||||
|
||||
auto& union_type = verify_cast<IDL::UnionType>(*parameter.type);
|
||||
union_generator.set("union_type", union_type_to_variant(union_type, interface));
|
||||
|
@ -1023,7 +1023,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
}
|
||||
|
||||
if (dictionary_type) {
|
||||
auto dictionary_generator = union_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto dictionary_generator = union_generator.fork();
|
||||
dictionary_generator.set("dictionary.type", dictionary_type->name());
|
||||
|
||||
// The lambda must take the JS::Value to convert as a parameter instead of capturing it in order to support union types being variadic.
|
||||
|
@ -1121,7 +1121,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
if (!IDL::is_platform_object(type))
|
||||
continue;
|
||||
|
||||
auto union_platform_object_type_generator = union_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto union_platform_object_type_generator = union_generator.fork();
|
||||
union_platform_object_type_generator.set("platform_object_type", type->name());
|
||||
|
||||
union_platform_object_type_generator.append(R"~~~(
|
||||
|
@ -1349,7 +1349,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter
|
|||
// 3. Assert: Type(x) is Number.
|
||||
// 4. Return the result of converting x to T.
|
||||
|
||||
auto union_numeric_type_generator = union_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto union_numeric_type_generator = union_generator.fork();
|
||||
auto cpp_type = IDL::idl_type_name_to_cpp_type(*numeric_type, interface);
|
||||
union_numeric_type_generator.set("numeric_type", cpp_type.name);
|
||||
|
||||
|
@ -1464,7 +1464,7 @@ static void generate_argument_count_check(SourceGenerator& generator, Deprecated
|
|||
if (argument_count == 0)
|
||||
return;
|
||||
|
||||
auto argument_count_check_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto argument_count_check_generator = generator.fork();
|
||||
argument_count_check_generator.set("function.name", function_name);
|
||||
argument_count_check_generator.set("function.nargs", DeprecatedString::number(argument_count));
|
||||
|
||||
|
@ -1484,7 +1484,7 @@ static void generate_argument_count_check(SourceGenerator& generator, Deprecated
|
|||
|
||||
static void generate_arguments(SourceGenerator& generator, Vector<IDL::Parameter> const& parameters, StringBuilder& arguments_builder, IDL::Interface const& interface)
|
||||
{
|
||||
auto arguments_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto arguments_generator = generator.fork();
|
||||
|
||||
Vector<DeprecatedString> parameter_names;
|
||||
size_t argument_index = 0;
|
||||
|
@ -1515,7 +1515,7 @@ static void generate_arguments(SourceGenerator& generator, Vector<IDL::Parameter
|
|||
// https://webidl.spec.whatwg.org/#create-sequence-from-iterable
|
||||
void IDL::ParameterizedType::generate_sequence_from_iterable(SourceGenerator& generator, DeprecatedString const& cpp_name, DeprecatedString const& iterable_cpp_name, DeprecatedString const& iterator_method_cpp_name, IDL::Interface const& interface, size_t recursion_depth) const
|
||||
{
|
||||
auto sequence_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto sequence_generator = generator.fork();
|
||||
sequence_generator.set("cpp_name", cpp_name);
|
||||
sequence_generator.set("iterable_cpp_name", iterable_cpp_name);
|
||||
sequence_generator.set("iterator_method_cpp_name", iterator_method_cpp_name);
|
||||
|
@ -1575,7 +1575,7 @@ enum class WrappingReference {
|
|||
|
||||
static void generate_wrap_statement(SourceGenerator& generator, DeprecatedString const& value, IDL::Type const& type, IDL::Interface const& interface, StringView result_expression, WrappingReference wrapping_reference = WrappingReference::No, size_t recursion_depth = 0)
|
||||
{
|
||||
auto scoped_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto scoped_generator = generator.fork();
|
||||
scoped_generator.set("value", value);
|
||||
if (!libweb_interface_namespaces.span().contains_slow(type.name())) {
|
||||
if (is_javascript_builtin(type))
|
||||
|
@ -1718,7 +1718,7 @@ static void generate_wrap_statement(SourceGenerator& generator, DeprecatedString
|
|||
} else if (is<IDL::UnionType>(type)) {
|
||||
auto& union_type = verify_cast<IDL::UnionType>(type);
|
||||
auto union_types = union_type.flattened_member_types();
|
||||
auto union_generator = scoped_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto union_generator = scoped_generator.fork();
|
||||
|
||||
union_generator.append(R"~~~(
|
||||
@result_expression@ @value@.visit(
|
||||
|
@ -1795,7 +1795,7 @@ static void generate_wrap_statement(SourceGenerator& generator, DeprecatedString
|
|||
}
|
||||
} else if (interface.dictionaries.contains(type.name())) {
|
||||
// https://webidl.spec.whatwg.org/#es-dictionary
|
||||
auto dictionary_generator = scoped_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto dictionary_generator = scoped_generator.fork();
|
||||
|
||||
dictionary_generator.append(R"~~~(
|
||||
auto dictionary_object@recursion_depth@ = JS::Object::create(realm, realm.intrinsics().object_prototype());
|
||||
|
@ -1863,7 +1863,7 @@ static void generate_return_statement(SourceGenerator& generator, IDL::Type cons
|
|||
|
||||
static void generate_variable_statement(SourceGenerator& generator, DeprecatedString const& variable_name, IDL::Type const& value_type, DeprecatedString const& value_name, IDL::Interface const& interface)
|
||||
{
|
||||
auto variable_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto variable_generator = generator.fork();
|
||||
variable_generator.set("variable_name", variable_name);
|
||||
variable_generator.append(R"~~~(
|
||||
JS::Value @variable_name@;
|
||||
|
@ -1873,7 +1873,7 @@ static void generate_variable_statement(SourceGenerator& generator, DeprecatedSt
|
|||
|
||||
static void generate_function(SourceGenerator& generator, IDL::Function const& function, StaticFunction is_static_function, DeprecatedString const& class_name, DeprecatedString const& interface_fully_qualified_name, IDL::Interface const& interface)
|
||||
{
|
||||
auto function_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto function_generator = generator.fork();
|
||||
function_generator.set("class_name", class_name);
|
||||
function_generator.set("interface_fully_qualified_name", interface_fully_qualified_name);
|
||||
function_generator.set("function.name:snakecase", make_input_acceptable_cpp(function.name.to_snakecase()));
|
||||
|
@ -2128,7 +2128,7 @@ static DeprecatedString generate_constructor_for_idl_type(Type const& type)
|
|||
|
||||
static void generate_overload_arbiter(SourceGenerator& generator, auto const& overload_set, DeprecatedString const& class_name)
|
||||
{
|
||||
auto function_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto function_generator = generator.fork();
|
||||
function_generator.set("class_name", class_name);
|
||||
function_generator.set("function.name:snakecase", make_input_acceptable_cpp(overload_set.key.to_snakecase()));
|
||||
|
||||
|
@ -2249,7 +2249,7 @@ static void generate_prototype_or_global_mixin_declarations(IDL::Interface const
|
|||
SourceGenerator generator { builder };
|
||||
|
||||
for (auto const& overload_set : interface.overload_sets) {
|
||||
auto function_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto function_generator = generator.fork();
|
||||
function_generator.set("function.name:snakecase", make_input_acceptable_cpp(overload_set.key.to_snakecase()));
|
||||
function_generator.append(R"~~~(
|
||||
JS_DECLARE_NATIVE_FUNCTION(@function.name:snakecase@);
|
||||
|
@ -2265,14 +2265,14 @@ static void generate_prototype_or_global_mixin_declarations(IDL::Interface const
|
|||
}
|
||||
|
||||
if (interface.has_stringifier) {
|
||||
auto stringifier_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto stringifier_generator = generator.fork();
|
||||
stringifier_generator.append(R"~~~(
|
||||
JS_DECLARE_NATIVE_FUNCTION(to_string);
|
||||
)~~~");
|
||||
}
|
||||
|
||||
if (interface.pair_iterator_types.has_value()) {
|
||||
auto iterator_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto iterator_generator = generator.fork();
|
||||
iterator_generator.append(R"~~~(
|
||||
JS_DECLARE_NATIVE_FUNCTION(entries);
|
||||
JS_DECLARE_NATIVE_FUNCTION(for_each);
|
||||
|
@ -2282,7 +2282,7 @@ static void generate_prototype_or_global_mixin_declarations(IDL::Interface const
|
|||
}
|
||||
|
||||
for (auto& attribute : interface.attributes) {
|
||||
auto attribute_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto attribute_generator = generator.fork();
|
||||
attribute_generator.set("attribute.name:snakecase", attribute.name.to_snakecase());
|
||||
attribute_generator.append(R"~~~(
|
||||
JS_DECLARE_NATIVE_FUNCTION(@attribute.name:snakecase@_getter);
|
||||
|
@ -2304,7 +2304,7 @@ static void generate_prototype_or_global_mixin_declarations(IDL::Interface const
|
|||
for (auto& it : interface.enumerations) {
|
||||
if (!it.value.is_original_definition)
|
||||
continue;
|
||||
auto enum_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto enum_generator = generator.fork();
|
||||
enum_generator.set("enum.type.name", it.key);
|
||||
enum_generator.append(R"~~~(
|
||||
enum class @enum.type.name@ {
|
||||
|
@ -2420,7 +2420,7 @@ static void collect_attribute_values_of_an_inheritance_stack(SourceGenerator& fu
|
|||
if (!attribute.type->is_json(interface_in_chain))
|
||||
continue;
|
||||
|
||||
auto attribute_generator = function_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto attribute_generator = function_generator.fork();
|
||||
auto return_value_name = DeprecatedString::formatted("{}_retval", attribute.name.to_snakecase());
|
||||
|
||||
attribute_generator.set("attribute.name", attribute.name);
|
||||
|
@ -2468,7 +2468,7 @@ static void collect_attribute_values_of_an_inheritance_stack(SourceGenerator& fu
|
|||
}
|
||||
|
||||
for (auto& constant : interface_in_chain.constants) {
|
||||
auto constant_generator = function_generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto constant_generator = function_generator.fork();
|
||||
constant_generator.set("constant.name", constant.name);
|
||||
|
||||
generate_wrap_statement(constant_generator, constant.value, constant.type, interface_in_chain, DeprecatedString::formatted("auto constant_{}_value =", constant.name));
|
||||
|
@ -2485,7 +2485,7 @@ static void generate_default_to_json_function(SourceGenerator& generator, Deprec
|
|||
{
|
||||
// NOTE: This is done heavily out of order since the spec mixes parse time and run time type information together.
|
||||
|
||||
auto function_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto function_generator = generator.fork();
|
||||
function_generator.set("class_name", class_name);
|
||||
|
||||
// 4. Let result be OrdinaryObjectCreate(%Object.prototype%).
|
||||
|
@ -2582,7 +2582,7 @@ void @class_name@::initialize(JS::Realm& realm)
|
|||
|
||||
// https://webidl.spec.whatwg.org/#es-attributes
|
||||
for (auto& attribute : interface.attributes) {
|
||||
auto attribute_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto attribute_generator = generator.fork();
|
||||
attribute_generator.set("attribute.name", attribute.name);
|
||||
attribute_generator.set("attribute.getter_callback", attribute.getter_callback_name);
|
||||
|
||||
|
@ -2606,7 +2606,7 @@ void @class_name@::initialize(JS::Realm& realm)
|
|||
for (auto& constant : interface.constants) {
|
||||
// FIXME: Do constants need to be added to the unscopable list?
|
||||
|
||||
auto constant_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto constant_generator = generator.fork();
|
||||
constant_generator.set("constant.name", constant.name);
|
||||
|
||||
generate_wrap_statement(constant_generator, constant.value, constant.type, interface, DeprecatedString::formatted("auto constant_{}_value =", constant.name));
|
||||
|
@ -2618,7 +2618,7 @@ void @class_name@::initialize(JS::Realm& realm)
|
|||
|
||||
// https://webidl.spec.whatwg.org/#es-operations
|
||||
for (auto const& overload_set : interface.overload_sets) {
|
||||
auto function_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto function_generator = generator.fork();
|
||||
function_generator.set("function.name", overload_set.key);
|
||||
function_generator.set("function.name:snakecase", make_input_acceptable_cpp(overload_set.key.to_snakecase()));
|
||||
function_generator.set("function.length", DeprecatedString::number(get_shortest_function_length(overload_set.value)));
|
||||
|
@ -2638,7 +2638,7 @@ void @class_name@::initialize(JS::Realm& realm)
|
|||
if (interface.has_stringifier) {
|
||||
// FIXME: Do stringifiers need to be added to the unscopable list?
|
||||
|
||||
auto stringifier_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto stringifier_generator = generator.fork();
|
||||
stringifier_generator.append(R"~~~(
|
||||
define_native_function(realm, "toString", to_string, 0, default_attributes);
|
||||
)~~~");
|
||||
|
@ -2647,7 +2647,7 @@ void @class_name@::initialize(JS::Realm& realm)
|
|||
// https://webidl.spec.whatwg.org/#define-the-iteration-methods
|
||||
// This applies to this if block and the following if block.
|
||||
if (interface.indexed_property_getter.has_value()) {
|
||||
auto iterator_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto iterator_generator = generator.fork();
|
||||
iterator_generator.append(R"~~~(
|
||||
define_direct_property(vm.well_known_symbol_iterator(), realm.intrinsics().array_prototype()->get_without_side_effects(vm.names.values), JS::Attribute::Configurable | JS::Attribute::Writable);
|
||||
)~~~");
|
||||
|
@ -2665,7 +2665,7 @@ void @class_name@::initialize(JS::Realm& realm)
|
|||
if (interface.pair_iterator_types.has_value()) {
|
||||
// FIXME: Do pair iterators need to be added to the unscopable list?
|
||||
|
||||
auto iterator_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto iterator_generator = generator.fork();
|
||||
iterator_generator.append(R"~~~(
|
||||
define_native_function(realm, vm.names.entries, entries, 0, default_attributes);
|
||||
define_native_function(realm, vm.names.forEach, for_each, 1, default_attributes);
|
||||
|
@ -2728,7 +2728,7 @@ static JS::ThrowCompletionOr<@fully_qualified_name@*> impl_from(JS::VM& vm)
|
|||
}
|
||||
|
||||
for (auto& attribute : interface.attributes) {
|
||||
auto attribute_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto attribute_generator = generator.fork();
|
||||
attribute_generator.set("attribute.name", attribute.name);
|
||||
attribute_generator.set("attribute.getter_callback", attribute.getter_callback_name);
|
||||
attribute_generator.set("attribute.setter_callback", attribute.setter_callback_name);
|
||||
|
@ -2950,7 +2950,7 @@ JS_DEFINE_NATIVE_FUNCTION(@class_name@::@attribute.setter_callback@)
|
|||
}
|
||||
|
||||
if (interface.has_stringifier) {
|
||||
auto stringifier_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto stringifier_generator = generator.fork();
|
||||
stringifier_generator.set("class_name", class_name);
|
||||
if (interface.stringifier_attribute.has_value())
|
||||
stringifier_generator.set("attribute.cpp_getter_name", interface.stringifier_attribute->to_snakecase());
|
||||
|
@ -2985,7 +2985,7 @@ JS_DEFINE_NATIVE_FUNCTION(@class_name@::to_string)
|
|||
}
|
||||
|
||||
if (interface.pair_iterator_types.has_value()) {
|
||||
auto iterator_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto iterator_generator = generator.fork();
|
||||
iterator_generator.append(R"~~~(
|
||||
JS_DEFINE_NATIVE_FUNCTION(@class_name@::entries)
|
||||
{
|
||||
|
@ -3064,7 +3064,7 @@ private:
|
|||
}
|
||||
|
||||
for (auto const& overload_set : interface.overload_sets) {
|
||||
auto function_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto function_generator = generator.fork();
|
||||
function_generator.set("function.name:snakecase", make_input_acceptable_cpp(overload_set.key.to_snakecase()));
|
||||
function_generator.append(R"~~~(
|
||||
JS_DECLARE_NATIVE_FUNCTION(@function.name:snakecase@);
|
||||
|
@ -3162,7 +3162,7 @@ void @namespace_class@::initialize(JS::Realm& realm)
|
|||
|
||||
// https://webidl.spec.whatwg.org/#es-operations
|
||||
for (auto const& overload_set : interface.overload_sets) {
|
||||
auto function_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto function_generator = generator.fork();
|
||||
function_generator.set("function.name", overload_set.key);
|
||||
function_generator.set("function.name:snakecase", make_input_acceptable_cpp(overload_set.key.to_snakecase()));
|
||||
function_generator.set("function.length", DeprecatedString::number(get_shortest_function_length(overload_set.value)));
|
||||
|
@ -3227,7 +3227,7 @@ private:
|
|||
)~~~");
|
||||
|
||||
for (auto const& overload_set : interface.static_overload_sets) {
|
||||
auto function_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto function_generator = generator.fork();
|
||||
function_generator.set("function.name:snakecase", make_input_acceptable_cpp(overload_set.key.to_snakecase()));
|
||||
function_generator.append(R"~~~(
|
||||
JS_DECLARE_NATIVE_FUNCTION(@function.name:snakecase@);
|
||||
|
@ -3557,7 +3557,7 @@ void @constructor_class@::initialize(JS::Realm& realm)
|
|||
)~~~");
|
||||
|
||||
for (auto& constant : interface.constants) {
|
||||
auto constant_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto constant_generator = generator.fork();
|
||||
constant_generator.set("constant.name", constant.name);
|
||||
|
||||
generate_wrap_statement(constant_generator, constant.value, constant.type, interface, DeprecatedString::formatted("auto constant_{}_value =", constant.name));
|
||||
|
@ -3569,7 +3569,7 @@ void @constructor_class@::initialize(JS::Realm& realm)
|
|||
|
||||
// https://webidl.spec.whatwg.org/#es-operations
|
||||
for (auto const& overload_set : interface.static_overload_sets) {
|
||||
auto function_generator = generator.fork().release_value_but_fixme_should_propagate_errors();
|
||||
auto function_generator = generator.fork();
|
||||
function_generator.set("function.name", overload_set.key);
|
||||
function_generator.set("function.name:snakecase", make_input_acceptable_cpp(overload_set.key.to_snakecase()));
|
||||
function_generator.set("function.length", DeprecatedString::number(get_shortest_function_length(overload_set.value)));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue