41 lines
939 B
JavaScript
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));
|