Frame-this-07.js (698B)
1 // Frame.this can be marked as optimized-out in some cases. Here we call an 2 // arrow function but its enclosing function is no longer live, so it's 3 // impossible to recover its missing 'this' binding. 4 var g = newGlobal({newCompartment: true}); 5 g.eval("x = 4"); 6 g.eval("var foo = function() { return () => 1; }; var arrow = foo.call(3);"); 7 var dbg = new Debugger(g); 8 var log = ""; 9 dbg.onEnterFrame = function (frame) { 10 if (frame.type === "eval") 11 return; 12 assertEq(frame.type, "call"); 13 assertEq(frame.this.optimizedOut, true); 14 frame.eval("try { print(this.x); } catch(e) { exc = e; }"); 15 assertEq(typeof g.exc, "object"); 16 log += "d"; 17 }; 18 g.eval("arrow();"); 19 assertEq(log, "d");