comparison: js/src/jit-test/tests/for-of/semantics-09.js
js/src/jit-test/tests/for-of/semantics-09.js
- changeset 0
- 6474c204b198
equal
deleted
inserted
replaced
|
1 // The LHS of a for-of loop is not evaluated until after the .next() method returns. |
|
2 |
|
3 var s; |
|
4 function f() { |
|
5 s += 'f'; |
|
6 return {}; |
|
7 } |
|
8 |
|
9 // Test 1: .next() throws StopIteration right away. f is never called. |
|
10 s = ''; |
|
11 for (f().x of []) |
|
12 s += '.'; |
|
13 assertEq(s, ''); |
|
14 |
|
15 // Test 2: check proper interleaving of f calls, iterator.next() calls, and the loop body. |
|
16 function g() { |
|
17 s += 'g'; |
|
18 yield 0; |
|
19 s += 'g'; |
|
20 yield 1; |
|
21 s += 'g'; |
|
22 } |
|
23 for (f().x of g()) |
|
24 s += '.'; |
|
25 assertEq(s, 'gf.gf.g'); |