2015-01-04 19:40:09 +11:00

41 lines
939 B
JavaScript

// Options: --generator-comprehension
function accumulate(iterator) {
var result = '';
for (var value of iterator) {
result = result + String(value);
}
return result;
}
function* range() {
for (var i = 0; i < 5; i++) {
yield i;
}
}
var iter = (for (x of [0, 1, 2, 3, 4]) x);
assert.equal('01234', accumulate(iter));
var iter2 = (for (x of [0, 1, 2, 3, 4]) for (y of [0, 1, 2, 3, 4]) x + '' + y );
assert.equal('00010203041011121314202122232430313233344041424344',
accumulate(iter2));
var iter3 = (
for (x of [0, 1, 2, 3, 4])
for (y of range())
if (x === y)
x + '' + y);
assert.equal('0011223344', accumulate(iter3));
// Ensure this works as expression statement
(for (testVar of []) testVar);
var iter4 = (
for (x of range())
if (x % 2 === 0)
for (y of range())
if (y % 2 === 1)
x + '' + y);
assert.equal('010321234143', accumulate(iter4));