mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-06-11 09:29:49 +00:00
38 lines
932 B
JavaScript
38 lines
932 B
JavaScript
// An Environment for a `with` statement does not observe bindings ruled out by @@unscopables.
|
|
|
|
load(libdir + "asserts.js");
|
|
|
|
let g = newGlobal();
|
|
g.eval(`
|
|
let x = 'global';
|
|
function f() {
|
|
let obj = {
|
|
x: 'obj',
|
|
y: 'obj',
|
|
[Symbol.unscopables]: {x: 1},
|
|
};
|
|
with (obj)
|
|
debugger;
|
|
}
|
|
`);
|
|
let dbg = Debugger(g);
|
|
let hits = 0;
|
|
dbg.onDebuggerStatement = function (frame) {
|
|
let env = frame.environment;
|
|
|
|
assertEq(env.find("x") !== env, true);
|
|
assertEq(env.names().indexOf("x"), -1);
|
|
assertEq(env.getVariable("x"), undefined);
|
|
assertThrowsInstanceOf(() => env.setVariable("x", 7), TypeError);
|
|
|
|
assertEq(env.find("y") === env, true);
|
|
assertEq(env.getVariable("y"), "obj");
|
|
env.setVariable("y", 8);
|
|
|
|
assertEq(frame.eval("x").return, "global");
|
|
assertEq(frame.eval("y").return, 8);
|
|
hits++;
|
|
};
|
|
g.f();
|
|
assertEq(hits, 1);
|