From 067d83961551e916f7a7098cd0c39edc67b25bda Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Mon, 27 Sep 2021 16:02:22 +0100 Subject: [PATCH] LibWeb: Add support for the any type in returning and parameters Required for CustomEvent. --- .../LibWeb/WrapperGenerator.cpp | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp index 39b66c1d9a..060f3ab960 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp @@ -897,9 +897,27 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter } )~~~"); } else if (parameter.type.name == "any") { - scoped_generator.append(R"~~~( + if (!optional) { + scoped_generator.append(R"~~~( auto @cpp_name@ = @js_name@@js_suffix@; )~~~"); + } else { + scoped_generator.append(R"~~~( + JS::Value @cpp_name@; + if (!@js_name@@js_suffix@.is_undefined()) + @cpp_name@ = @js_name@@js_suffix@; +)~~~"); + if (optional_default_value.has_value()) { + if (optional_default_value == "null") { + scoped_generator.append(R"~~~( + else + @cpp_name@ = JS::js_null(); +)~~~"); + } else { + TODO(); + } + } + } } else { dbgln("Unimplemented JS-to-C++ conversion: {}", parameter.type.name); VERIFY_NOT_REACHED(); @@ -1000,7 +1018,7 @@ static void generate_return_statement(SourceGenerator& generator, IDL::Type cons scoped_generator.append(R"~~~( return JS::Value((i32)retval); )~~~"); - } else if (return_type.name == "Uint8ClampedArray") { + } else if (return_type.name == "Uint8ClampedArray" || return_type.name == "any") { scoped_generator.append(R"~~~( return retval; )~~~");