blob: 35de70975be2f03fe78a823c628823476b880349 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// setVariable throws if no binding exists.
load(libdir + "asserts.js");
function test(code) {
var g = newGlobal({newCompartment: true});
var dbg = new Debugger(g);
var hits = 0;
dbg.onDebuggerStatement = function (frame) {
var env = frame.older.environment;
assertThrowsInstanceOf(function () { env.setVariable("y", 2); }, Error);
hits++;
};
g.eval("var y = 0; function d() { debugger; }");
assertEq(g.eval(code), 0);
assertEq(g.y, 0);
assertEq(hits, 1);
}
// local scope of non-heavyweight function
test("function f() { var x = 1; d(); return y; } f();");
// block scope
test("function h(x) { if (x) { let x = 1; d(); return y; } } h(3);");
// strict eval scope
test("'use strict'; eval('d(); y;');");
|