// Frame.this can be marked as optimized-out in some cases. Here we call an // arrow function but its enclosing function is no longer live, so it's // impossible to recover its missing 'this' binding. var g = newGlobal(); g.eval("x = 4"); g.eval("var foo = function() { return () => 1; }; var arrow = foo.call(3);"); var dbg = new Debugger(g); var log = ""; dbg.onEnterFrame = function (frame) { if (frame.type === "eval") return; assertEq(frame.type, "call"); assertEq(frame.this.optimizedOut, true); frame.eval("try { print(this.x); } catch(e) { exc = e; }"); assertEq(typeof g.exc, "object"); log += "d"; }; g.eval("arrow();"); assertEq(log, "d");