// Return resumption values to non-debuggee frames.

load(libdir + 'asserts.js');

var g = newGlobal({newCompartment: true});
var dbg = new Debugger;

var log;

function handlerWithResumption(resumption) {
  return function (frame) {
    log += 'd';
    dbg.removeDebuggee(g);
    return resumption;
  };
}

log = '';
dbg.onDebuggerStatement = handlerWithResumption(undefined);
dbg.addDebuggee(g);
assertEq(g.eval('debugger; 42;'), 42);
assertEq(log, 'd');

log = '';
dbg.onDebuggerStatement = handlerWithResumption({ return: 1729 });
dbg.addDebuggee(g);
assertEq(g.eval('debugger; 42;'), 1729);
assertEq(log, 'd');

log = '';
dbg.onDebuggerStatement = handlerWithResumption(null);
dbg.addDebuggee(g);
assertEq(g.evaluate('debugger; 42;', { catchTermination: true }), 'terminated');
assertEq(log, 'd');
