LibWeb: Verify that all overloads contain Unscopable if present

It would be strange for the IDL to be defined as such, so instead of
leaving a FIXME comment, let's just verify that this doesn't happen in
practise incase it does end up happening in reality.

(cherry picked from commit 013c2a1c7cda0d5921e2368e5de3a65ed9208625)
This commit is contained in:
Shannon Booth 2024-10-28 19:55:42 +13:00 committed by Nico Weber
parent 1dfd8755bc
commit c48cc68197

View file

@ -3277,8 +3277,8 @@ void @class_name@::initialize(JS::Realm& realm)
function_generator.set("function.name:snakecase", make_input_acceptable_cpp(overload_set.key.to_snakecase()));
function_generator.set("function.length", ByteString::number(get_shortest_function_length(overload_set.value)));
// FIXME: What if only some of the overloads are Unscopable?
if (any_of(overload_set.value, [](auto const& function) { return function.extended_attributes.contains("Unscopable"); })) {
VERIFY(all_of(overload_set.value, [](auto const& function) { return function.extended_attributes.contains("Unscopable"); }));
function_generator.append(R"~~~(
MUST(unscopable_object->create_data_property("@function.name@", JS::Value(true)));
)~~~");