// This test ensures that capturing a stack works when the Debugger.Frame
// being used for an eval has an async stack on the activation between
// the two debuggee frames.

const global = newGlobal({ newCompartment: true });
const dbg = new Debugger(global);
dbg.onDebuggerStatement = function() {
  const frame = dbg.getNewestFrame();

  // Capturing this stack inside the debugger compartment will populate the
  // LiveSavedFrameCache with a SavedFrame in the debugger compartment.
  const opts = {
    stack: saveStack(),
  };

  bindToAsyncStack(function() {
    // This captured stack needs to properly invalidate the LiveSavedFrameCache
    // for the frame and create a new one inside the debuggee compartment.
    frame.eval(`saveStack()`);
  }, opts)();
};
global.eval(`debugger;`);