33 lines
802 B
JavaScript
33 lines
802 B
JavaScript
// Options: --array-comprehension
|
|
|
|
function* range() {
|
|
for (var i = 0; i < 5; i++) {
|
|
yield i;
|
|
}
|
|
}
|
|
|
|
var array = [for (x of [0, 1, 2, 3]) x];
|
|
assertArrayEquals([0, 1, 2, 3], array);
|
|
|
|
var array2 = [for (x of [0, 1, 2]) for (y of [0, 1, 2]) x + '' + y];
|
|
assertArrayEquals(['00', '01', '02', '10', '11', '12', '20', '21', '22'],
|
|
array2);
|
|
|
|
var array3 = [
|
|
for (x of [0, 1, 2, 3, 4])
|
|
for (y of range())
|
|
if (x === y)
|
|
x + '' + y];
|
|
assertArrayEquals(['00', '11', '22', '33', '44'], array3);
|
|
|
|
// Ensure this works as expression statement
|
|
[for (testVar of []) testVar];
|
|
|
|
var array4 = [
|
|
for (x of range())
|
|
if (x % 2 === 0)
|
|
for (y of range())
|
|
if (y % 2 === 1)
|
|
x + '' + y];
|
|
assertArrayEquals(['01', '03', '21', '23', '41', '43'], array4);
|