mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-06-12 17:31:05 +00:00
42 lines
917 B
JavaScript
42 lines
917 B
JavaScript
// @@unscopables checks can call getters.
|
|
|
|
// The @@unscopables property itself can be a getter.
|
|
let hit1 = 0;
|
|
let x = "global x";
|
|
let env1 = {
|
|
x: "env1.x",
|
|
get [Symbol.unscopables]() {
|
|
hit1++;
|
|
return {x: true};
|
|
}
|
|
};
|
|
with (env1)
|
|
assertEq(x, "global x");
|
|
assertEq(hit1, 1);
|
|
|
|
// It can throw; the exception is propagated out.
|
|
function Fit() {}
|
|
with ({x: 0, get [Symbol.unscopables]() { throw new Fit; }})
|
|
assertThrowsInstanceOf(() => x, Fit);
|
|
|
|
// Individual properties on the @@unscopables object can have getters.
|
|
let hit2 = 0;
|
|
let env2 = {
|
|
x: "env2.x",
|
|
[Symbol.unscopables]: {
|
|
get x() {
|
|
hit2++;
|
|
return true;
|
|
}
|
|
}
|
|
};
|
|
with (env2)
|
|
assertEq(x, "global x");
|
|
assertEq(hit2, 1);
|
|
|
|
// And they can throw.
|
|
with ({x: 0, [Symbol.unscopables]: {get x() { throw new Fit; }}})
|
|
assertThrowsInstanceOf(() => x, Fit);
|
|
|
|
reportCompare(0, 0);
|