diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp index 664bda2c73..82374d62f8 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp @@ -1583,6 +1583,12 @@ static void generate_wrap_statement(SourceGenerator& generator, DeprecatedString if (!@value@.has_value()) { @result_expression@ JS::js_null(); } else { +)~~~"); + } else if (type.is_primitive()) { + scoped_generator.append(R"~~~( + if (!@value@.has_value()) { + @result_expression@ JS::js_null(); + } else { )~~~"); } else { scoped_generator.append(R"~~~( @@ -1643,9 +1649,15 @@ static void generate_wrap_statement(SourceGenerator& generator, DeprecatedString @result_expression@ new_array@recursion_depth@; )~~~"); } else if (type.name() == "boolean" || type.name() == "double" || type.name() == "float") { - scoped_generator.append(R"~~~( + if (type.is_nullable()) { + scoped_generator.append(R"~~~( + @result_expression@ JS::Value(@value@.release_value()); +)~~~"); + } else { + scoped_generator.append(R"~~~( @result_expression@ JS::Value(@value@); )~~~"); + } } else if (type.name() == "short" || type.name() == "long" || type.name() == "unsigned short") { scoped_generator.append(R"~~~( @result_expression@ JS::Value((i32)@value@);