From 3faed65e2bb40bfda78718db8ec060b2356c3a26 Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Sun, 12 Sep 2021 00:09:07 +0100 Subject: [PATCH] LibWeb: Add full support for optional and nullable to IDL string types Used by History. --- .../CodeGenerators/LibWeb/WrapperGenerator.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp index 9039c68bbf..85617c54b3 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp @@ -550,11 +550,22 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter // FIXME: Add support for optional, nullable and default values to all types if (parameter.type.is_string()) { if (!optional) { - scoped_generator.append(R"~~~( + if (!parameter.type.nullable) { + scoped_generator.append(R"~~~( auto @cpp_name@ = @js_name@@js_suffix@.to_string(global_object, @legacy_null_to_empty_string@); if (vm.exception()) @return_statement@ )~~~"); + } else { + scoped_generator.append(R"~~~( + String @cpp_name@; + if (!@js_name@@js_suffix@.is_nullish()) { + @cpp_name@ = @js_name@@js_suffix@.to_string(global_object, @legacy_null_to_empty_string@); + if (vm.exception()) + @return_statement@ + } +)~~~"); + } } else { scoped_generator.append(R"~~~( String @cpp_name@; @@ -563,7 +574,7 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter if (vm.exception()) @return_statement@ })~~~"); - if (optional_default_value.has_value()) { + if (optional_default_value.has_value() && (!parameter.type.nullable || optional_default_value.value() != "null")) { scoped_generator.append(R"~~~( else { @cpp_name@ = @parameter.optional_default_value@; }