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