Ver Fonte

IDLGenerators: Support nullable double values

Matthew Olsson há 2 anos atrás
pai
commit
f99d6e177f

+ 13 - 1
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@);