tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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;');");