tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

onDebuggerStatement-generator-resumption-01.js (849B)


      1 // A Debugger can {return:} from onDebuggerStatement in a generator.
      2 
      3 load(libdir + "asserts.js");
      4 
      5 let g = newGlobal({newCompartment: true});
      6 g.eval(`
      7    function* f1() {
      8        debugger;
      9        yield 1;
     10    }
     11 
     12    function* f2() {
     13        yield 1;
     14        debugger;
     15        yield 2;
     16    }
     17 `);
     18 
     19 let dbg = Debugger(g);
     20 dbg.onDebuggerStatement = frame => ({return: "Ronja"});
     21 
     22 let genObj = g.f1();
     23 assertDeepEq(genObj.next(), {value: "Ronja", done: true});
     24 // Forced return closes the generator. Closed generators behave like this:
     25 assertDeepEq(genObj.next(), {value: undefined, done: true});
     26 
     27 // It works the same after resuming from a yield.
     28 genObj = g.f2();
     29 assertDeepEq(genObj.next(), {value: 1, done: false});
     30 assertDeepEq(genObj.next(), {value: "Ronja", done: true});
     31 assertDeepEq(genObj.next(), {value: undefined, done: true});  // closed