diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp index 71c113d5b8..257e222603 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp @@ -605,9 +605,17 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter auto @cpp_name@ = JS::make_handle(&static_cast(@js_name@@js_suffix@.as_object())); )~~~"); } else if (parameter.type->name() == "object") { - scoped_generator.append(R"~~~( + if (optional) { + scoped_generator.append(R"~~~( + Optional> @cpp_name@; + if (!@js_name@@js_suffix@.is_undefined()) + @cpp_name@ = JS::make_handle(TRY(@js_name@@js_suffix@.to_object(vm))); +)~~~"); + } else { + scoped_generator.append(R"~~~( auto @cpp_name@ = JS::make_handle(TRY(@js_name@@js_suffix@.to_object(vm))); )~~~"); + } } else if (parameter.type->name() == "BufferSource") { scoped_generator.append(R"~~~( if (!@js_name@@js_suffix@.is_object() || !(is(@js_name@@js_suffix@.as_object()) || is(@js_name@@js_suffix@.as_object()) || is(@js_name@@js_suffix@.as_object())))