diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator/IDLGenerators.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator/IDLGenerators.cpp index 389344d8cb..df97328603 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator/IDLGenerators.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator/IDLGenerators.cpp @@ -605,10 +605,18 @@ static void generate_to_cpp(SourceGenerator& generator, ParameterType& parameter )~~~"); } - enum_generator.append(R"~~~( + // NOTE: Attribute setters return undefined instead of throwing when the string doesn't match an enum value. + if constexpr (!IsSame>) { + enum_generator.append(R"~~~( @else@ return vm.throw_completion(global_object, JS::ErrorType::InvalidEnumerationValue, @js_name.as_string@, "@parameter.type.name@"); )~~~"); + } else { + enum_generator.append(R"~~~( + @else@ + return JS::js_undefined(); +)~~~"); + } if (optional) { enum_generator.append(R"~~~(