wrappers.js (679B)
1 // Generator methods work transparently on CrossCompartmentWrappers. 2 3 load(libdir + "asserts.js"); 4 load(libdir + "iteration.js"); 5 6 var g = newGlobal(); 7 8 function *gen3() { yield 1; yield 2; } 9 it = gen3(); 10 g.eval("function *gen4() { yield 5; yield 6; }; var it4 = gen4();"); 11 12 // StarGenerator.next 13 assertIteratorResult(it.next.call(g.it4), 5, false) 14 15 // StarGenerator.throw 16 assertThrowsValue(() => it.throw.call(g.it4, 8), 8); 17 18 // StarGenerator.return 19 assertIteratorResult(it.return.call(g.it4, 8), 8, true); 20 21 // Other objects should throw. 22 try { 23 it.next.call([]); 24 assertEq(0, 1); 25 } catch (e) { 26 assertEq(e.toString().includes("called on incompatible Array"), true); 27 }