michael@0: // Generator-iterators are consumed the first time they are iterated. michael@0: michael@0: function range(n) { michael@0: for (var i = 0; i < n; i++) michael@0: yield i; michael@0: } michael@0: michael@0: var r = range(10); michael@0: var i = 0; michael@0: for (var x in r) michael@0: assertEq(x, i++); michael@0: assertEq(i, 10); michael@0: for (var y in r) michael@0: throw "FAIL"; michael@0: assertEq(y, undefined);