Environment-optimizedOut-01.js (1194B)
1 // Optimized out scopes should be considered optimizedOut. 2 3 var g = newGlobal({newCompartment: true}); 4 var dbg = new Debugger; 5 dbg.addDebuggee(g); 6 7 g.eval("" + function f() { 8 var x = 42; 9 { 10 let y = 43; 11 (function () { })(); 12 } 13 }); 14 15 dbg.onEnterFrame = function (f) { 16 if (f.callee && (f.callee.name === undefined)) { 17 blockenv = f.environment.parent; 18 assertEq(blockenv.optimizedOut, true); 19 assertEq(blockenv.inspectable, true); 20 assertEq(blockenv.type, "declarative"); 21 assertEq(blockenv.calleeScript, null); 22 assertEq(blockenv.names().indexOf("y") !== -1, true); 23 24 funenv = blockenv.parent; 25 assertEq(funenv.optimizedOut, true); 26 assertEq(funenv.inspectable, true); 27 assertEq(funenv.type, "declarative"); 28 assertEq(funenv.calleeScript, f.older.script); 29 assertEq(funenv.names().indexOf("x") !== -1, true); 30 31 globalenv = funenv.parent.parent; 32 assertEq(globalenv.optimizedOut, false); 33 assertEq(globalenv.inspectable, true); 34 assertEq(globalenv.type, "object"); 35 assertEq(globalenv.calleeScript, null); 36 37 dbg.removeDebuggee(g); 38 39 assertEq(blockenv.inspectable, false); 40 assertEq(funenv.inspectable, false); 41 } 42 } 43 44 g.f();