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();
|
auto& vm = this->vm();
|
||||||
MUST_OR_THROW_OOM(Base::initialize(realm));
|
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_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);
|
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