Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
michael@0 | 1 | // For and if clauses can nest without limit in comprehensions. This is |
michael@0 | 2 | // unlike JS 1.8 comprehensions, which can only have one trailing "if" |
michael@0 | 3 | // clause. |
michael@0 | 4 | |
michael@0 | 5 | function* range(start, end) { |
michael@0 | 6 | for (var n = start; n < end; n++) |
michael@0 | 7 | yield n; |
michael@0 | 8 | } |
michael@0 | 9 | |
michael@0 | 10 | function primesBetween6And25() { |
michael@0 | 11 | return [for (n of range(6, 25)) if (n % 2) if (n % 3) if (n % 5) n]; |
michael@0 | 12 | } |
michael@0 | 13 | assertDeepEq(primesBetween6And25(), [7,11,13,17,19,23]); |
michael@0 | 14 | |
michael@0 | 15 | function countUpToEvens(limit) { |
michael@0 | 16 | return [for (n of range(0, limit)) if (!(n % 2)) for (m of range(0, n)) m] |
michael@0 | 17 | } |
michael@0 | 18 | assertDeepEq(countUpToEvens(7), [0,1,0,1,2,3,0,1,2,3,4,5]); |
michael@0 | 19 | |
michael@0 | 20 | reportCompare(null, null, "test"); |