fix corner case in spreads (#4883)

fixes #4882
This commit is contained in:
Alex Lam S.L
2021-04-30 15:21:15 +01:00
committed by GitHub
parent d833e66d23
commit 8e4a19ffec
2 changed files with 104 additions and 8 deletions

View File

@@ -1068,3 +1068,91 @@ issue_4849: {
expect_stdout: "object"
node_version: ">=8"
}
issue_4882_1: {
options = {
objects: true,
spreads: true,
}
input: {
var o = {
p: "PASS",
... {
__proto__: {
p: "FAIL 1",
q: "FAIL 2",
},
},
};
console.log(o.p);
console.log(o.q);
}
expect: {
var o = {
p: "PASS",
};
console.log(o.p);
console.log(o.q);
}
expect_stdout: [
"PASS",
"undefined",
]
node_version: ">=8"
}
issue_4882_2: {
options = {
objects: true,
spreads: true,
}
input: {
console.log(null == Object.getPrototypeOf({
... {
__proto__: (console.log(42), null),
},
}) ? "FAIL" : "PASS");
}
expect: {
console.log(null == Object.getPrototypeOf({
... {
__proto__: (console.log(42), null),
},
}) ? "FAIL" : "PASS");
}
expect_stdout: [
"42",
"PASS",
]
node_version: ">=8"
}
issue_4882_3: {
options = {
objects: true,
spreads: true,
}
input: {
var o = {
__proto__: { p: 42 },
... {
set __proto__(v) {},
},
};
console.log(o.__proto__ === Object.getPrototypeOf(o) ? "FAIL" : "PASS");
console.log(o.p);
}
expect: {
var o = {
__proto__: { p: 42 },
["__proto__"]: void 0,
};
console.log(o.__proto__ === Object.getPrototypeOf(o) ? "FAIL" : "PASS");
console.log(o.p);
}
expect_stdout: [
"PASS",
"42",
]
node_version: ">=8"
}