1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:38:11 +00:00
serenity/Meta/Lagom/Tools/CodeGenerators/LibWeb
Shannon Booth f991e40d7f LibWeb: Support [Reflect] on IDL String attributes that may return null
This change allows IDL interfaces to be compiled using new AK String
which have a attribute in the interface that may return null.

Without this change we would run into a compile error from code such as
the following example:

```
auto retval = impl->deprecated_attribute(HTML::AttributeNames::ref);

if (!retval.has_value()) {
    return JS::js_null();
 }
 return JS::PrimitiveString::create(vm, retval.release_value());
```

As `deprecated_attribute` returns a `DeprecatedString` instead of an
`Optional<String>`. Fix that by using the non-deprecated attribute
implementation, and falling back to the empty string for where we cannot
return null.

Also add a test here to cover a regression I almost introduced here
which was not previously covered by our test suite.

Ideally, all of this should actually just be calling
Element::get_attribute_value, but I'm not entirely sure at this stage
what the behavioral change would be to test for here. Since this
implementation preserves the previous behavior, stick with it, and add a
FIXME for now.
2023-09-05 20:36:09 -04:00
..
BindingsGenerator LibWeb: Support [Reflect] on IDL String attributes that may return null 2023-09-05 20:36:09 -04:00
CMakeLists.txt LibWeb: Generate PseudoClass metadata 2023-08-12 16:26:32 +02:00
GenerateAriaRoles.cpp LibWeb: Stop using fallible JSON API in code generators 2023-08-22 13:08:24 +02:00
GenerateCSSEasingFunctions.cpp LibWeb: Stop using fallible JSON API in code generators 2023-08-22 13:08:24 +02:00
GenerateCSSEnums.cpp LibWeb: Stop using fallible JSON API in code generators 2023-08-22 13:08:24 +02:00
GenerateCSSMathFunctions.cpp LibWeb: Stop using fallible JSON API in code generators 2023-08-22 13:08:24 +02:00
GenerateCSSMediaFeatureID.cpp LibWeb: Stop using fallible JSON API in code generators 2023-08-22 13:08:24 +02:00
GenerateCSSPropertyID.cpp LibWeb: Stop using fallible JSON API in code generators 2023-08-22 13:08:24 +02:00
GenerateCSSPseudoClass.cpp LibWeb: Stop using fallible JSON API in code generators 2023-08-22 13:08:24 +02:00
GenerateCSSTransformFunctions.cpp LibWeb: Stop using fallible JSON API in code generators 2023-08-22 13:08:24 +02:00
GenerateCSSValueID.cpp LibWeb: Move check for CSS-wide keywords to ValueID.h 2023-09-05 14:27:23 +02:00
GenerateWindowOrWorkerInterfaces.cpp AK: Make SourceGenerator::fork() infallible 2023-08-22 13:08:24 +02:00
GeneratorUtil.h LibWeb: Make (snake/title/camel) casification functions infallible 2023-08-22 13:08:24 +02:00