Source code

Revision control

Copy as Markdown

Other Tools

// Check that duplicate bindings are not created for let/const variables.
let g = newGlobal({newCompartment: true});
let dbg = new Debugger(g);
g.eval(`
function f(x, y=x) {
let z = "Z";
debugger;
return x + y + z;
}
`);
let hits = 0;
let names = [];
dbg.onDebuggerStatement = frame => {
hits++;
for (let env = frame.environment; env.type !== "object"; env = env.parent) {
names.push(...env.names());
}
};
assertEq(g.f("X", "Y"), "XYZ");
assertEq(hits, 1);
assertEq(names.sort().join(", "), "arguments, x, y, z");