iterclose-extra-args.js (631B)
1 const iterable = { 2 [Symbol.iterator]() { 3 return { 4 i: 0, 5 next() { 6 return { value: this.i++, done: false } 7 }, 8 return(a, b, c, d) { 9 assertEq(a, undefined); 10 assertEq(b, undefined); 11 assertEq(c, undefined); 12 assertEq(d, undefined); 13 return { value: "return", done: true }; 14 } 15 }; 16 } 17 } 18 19 function closeIter(o) { 20 for (var x of o) { 21 if (x == 2) { 22 break; 23 } 24 } 25 } 26 27 function test() { 28 with ({}) {} 29 for (var i = 0; i < 100; i++) { 30 closeIter(iterable) 31 } 32 } 33 34 with ({}) {} 35 36 test(); 37 38 // Force an IC in Ion. 39 closeIter([1,2,3,4,5]); 40 41 test();