1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 20:17:44 +00:00

LibJS: Handle "receiver" argument in Reflect.{get,set}()

This commit is contained in:
Linus Groh 2020-06-25 14:00:13 +01:00 committed by Andreas Kling
parent f08aa6324e
commit afcfea2001
7 changed files with 60 additions and 17 deletions

View file

@ -33,6 +33,23 @@ try {
assert(Reflect.get(new String("foo"), 2) === "o");
assert(Reflect.get(new String("foo"), 3) === undefined);
const foo = {
get prop() {
this.getPropCalled = true;
}
};
const bar = {};
Object.setPrototypeOf(bar, foo);
assert(foo.getPropCalled === undefined);
assert(bar.getPropCalled === undefined);
Reflect.get(bar, "prop");
assert(foo.getPropCalled === undefined);
assert(bar.getPropCalled === true);
Reflect.get(bar, "prop", foo);
assert(foo.getPropCalled === true);
assert(bar.getPropCalled === true);
console.log("PASS");
} catch (e) {
console.log("FAIL: " + e);

View file

@ -48,6 +48,24 @@ try {
assert(a[3] === undefined);
assert(a[4] === "bar");
const foo = {
set prop(value) {
this.setPropCalled = true;
}
};
const bar = {};
Object.setPrototypeOf(bar, foo);
assert(foo.setPropCalled === undefined);
assert(bar.setPropCalled === undefined);
Reflect.set(bar, "prop", 42);
assert(foo.setPropCalled === undefined);
assert(bar.setPropCalled === true);
Reflect.set(bar, "prop", 42, foo);
assert(foo.setPropCalled === true);
assert(bar.setPropCalled === true);
console.log("PASS");
} catch (e) {
console.log("FAIL: " + e);