Source code
Revision control
Copy as Markdown
Other Tools
// 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({newCompartment: true});
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");