throw-closes.js (781B)
1 // When a generator function throws, the generator is closed. 2 3 load(libdir + "asserts.js"); 4 load(libdir + "iteration.js"); 5 6 // Star generator, next() throws. 7 function *g() { 8 yield 1; 9 yield 2; 10 throw 3; 11 yield 4; 12 } 13 var i = g(); 14 assertIteratorNext(i, 1); 15 assertIteratorNext(i, 2); 16 assertThrowsValue(() => i.next(), 3); 17 assertIteratorDone(i); 18 assertIteratorDone(i); 19 20 // Star generator, throw() throws. 21 function *h() { 22 yield 1; 23 yield 2; 24 } 25 var i = h(); 26 assertIteratorNext(i, 1); 27 assertThrowsValue(() => i.throw(4), 4); 28 assertIteratorDone(i); 29 30 // Star generator, return() throws. 31 function *h2() { 32 try { 33 yield 1; 34 yield 2; 35 } finally { 36 throw 6; 37 } 38 } 39 var i = h2(); 40 assertIteratorNext(i, 1); 41 assertThrowsValue(() => i.return(4), 6); 42 assertIteratorDone(i);