LibWeb: Handle optional return values for getters returning new String

This commit is contained in:
Kenneth Myhra 2023-02-28 21:32:52 +01:00 committed by Linus Groh
parent 98705ecf71
commit c0559e8a10
Notes: sideshowbarker 2024-07-16 23:35:41 +09:00

View file

@ -1487,11 +1487,19 @@ static void generate_wrap_statement(SourceGenerator& generator, DeprecatedString
if (type.is_nullable() && !is<UnionType>(type)) {
if (type.is_string()) {
scoped_generator.append(R"~~~(
if (!interface.extended_attributes.contains("UseNewAKString")) {
scoped_generator.append(R"~~~(
if (@value@.is_null()) {
@result_expression@ JS::js_null();
} else {
)~~~");
} else {
scoped_generator.append(R"~~~(
if (!@value@.has_value()) {
@result_expression@ JS::js_null();
} else {
)~~~");
}
} else if (type.name() == "sequence") {
scoped_generator.append(R"~~~(
if (!@value@.has_value()) {
@ -1508,9 +1516,15 @@ static void generate_wrap_statement(SourceGenerator& generator, DeprecatedString
}
if (type.is_string()) {
scoped_generator.append(R"~~~(
if (type.is_nullable() && interface.extended_attributes.contains("UseNewAKString")) {
scoped_generator.append(R"~~~(
@result_expression@ JS::PrimitiveString::create(vm, @value@.release_value());
)~~~");
} else {
scoped_generator.append(R"~~~(
@result_expression@ JS::PrimitiveString::create(vm, @value@);
)~~~");
}
} else if (type.name() == "sequence") {
// https://webidl.spec.whatwg.org/#es-sequence
auto& sequence_generic_type = verify_cast<IDL::ParameterizedType>(type);