Frame-onStep-generators-01.js (849B)
1 // Stepping into the `.next()` method of a generator works as expected. 2 3 let g = newGlobal({newCompartment: true}); 4 g.eval(`\ 5 function* nums() { // line 1 6 yield 1; // 2 7 yield 2; // 3 8 } // 4 9 function f() { // 5 10 let gen = nums(); // 6 11 gen.next(); // 7 12 gen.next(); // 8 13 gen.next(); // 9 14 } // 10 15 `); 16 17 let log = []; 18 let previousLine = -1; 19 let dbg = new Debugger(g); 20 dbg.onEnterFrame = frame => { 21 frame.onStep = () => { 22 let line = frame.script.getOffsetLocation(frame.offset).lineNumber; 23 if (previousLine != line) { // We stepped to a new line. 24 log.push(line); 25 previousLine = line; 26 } 27 }; 28 }; 29 30 g.f(); 31 assertEq(log.join(" "), "5 6 1 6 7 1 2 7 8 2 3 8 9 3 4 9 10");