LibWeb: Don't override prototype on generated iterator prototypes
Generated iterator prototypes already have the IteratorPrototype as
their prototype, but we were incorrectly hijacking them and rerouting
to ObjectPrototype.
Regressed in cfe663435e
.
This commit is contained in:
parent
3f1cc7125c
commit
7f90b0cab7
Notes:
sideshowbarker
2024-07-17 05:01:20 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/7f90b0cab7 Pull-request: https://github.com/SerenityOS/serenity/pull/19304 Reviewed-by: https://github.com/Lubrsi
3 changed files with 19 additions and 19 deletions
|
@ -3881,25 +3881,6 @@ JS::ThrowCompletionOr<void> @prototype_class@::initialize(JS::Realm& realm)
|
|||
{
|
||||
auto& vm = this->vm();
|
||||
MUST_OR_THROW_OOM(Base::initialize(realm));
|
||||
|
||||
)~~~");
|
||||
|
||||
if (interface.prototype_base_class == "ObjectPrototype") {
|
||||
generator.append(R"~~~(
|
||||
|
||||
set_prototype(realm.intrinsics().object_prototype());
|
||||
|
||||
)~~~");
|
||||
} else {
|
||||
generator.append(R"~~~(
|
||||
|
||||
set_prototype(&ensure_web_prototype<@prototype_base_class@>(realm, "@parent_name@"));
|
||||
|
||||
)~~~");
|
||||
}
|
||||
|
||||
generator.append(R"~~~(
|
||||
|
||||
define_native_function(realm, vm.names.next, next, 0, JS::Attribute::Writable | JS::Attribute::Enumerable | JS::Attribute::Configurable);
|
||||
define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(JS::PrimitiveString::create(vm, "Iterator"sv)), JS::Attribute::Configurable);
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
[object Iterator]
|
||||
[object Iterator]
|
||||
true
|
||||
hello
|
||||
1
|
||||
[object Window]
|
|
@ -0,0 +1,13 @@
|
|||
<script src="include.js"></script>
|
||||
<script>
|
||||
test(() => {
|
||||
let u = new URLSearchParams();
|
||||
let iterator = u[Symbol.iterator]();
|
||||
println(iterator);
|
||||
println(iterator[Symbol.iterator]());
|
||||
println(iterator === iterator[Symbol.iterator]());
|
||||
println(iterator[Symbol.iterator].call("hello"));
|
||||
println(iterator[Symbol.iterator].call(1));
|
||||
println(iterator[Symbol.iterator].call(window));
|
||||
});
|
||||
</script>
|
Loading…
Add table
Reference in a new issue