|
1 // Labeled break tests. |
|
2 function f1() { |
|
3 foo: |
|
4 if ([1]) { |
|
5 bar: |
|
6 for (var i=0; i<100; i++) { |
|
7 if (i > 60) |
|
8 break foo; |
|
9 } |
|
10 assertEq(0, 1); |
|
11 } |
|
12 assertEq(i, 61); |
|
13 return true; |
|
14 } |
|
15 assertEq(f1(), true); |
|
16 |
|
17 // Label with no breaks. |
|
18 function f2() { |
|
19 foo: |
|
20 if ([1]) { |
|
21 for (var i=0; i<100; i++) { |
|
22 } |
|
23 } |
|
24 assertEq(i, 100); |
|
25 return true; |
|
26 } |
|
27 assertEq(f2(), true); |
|
28 |
|
29 // No breaks and early return. |
|
30 function f3() { |
|
31 foo: { |
|
32 if (true) { |
|
33 for (var i=0; i<100; i++) { |
|
34 } |
|
35 } |
|
36 return false; |
|
37 } |
|
38 assertEq(i, 100); |
|
39 return true; |
|
40 } |
|
41 assertEq(f3(), false); |
|
42 |
|
43 // Multiple breaks. |
|
44 function f4() { |
|
45 foo: { |
|
46 if (true) { |
|
47 for (var i=0; i<100; i++) |
|
48 if (i > 70) |
|
49 break foo; |
|
50 if (i > 80) |
|
51 break foo; |
|
52 } |
|
53 break foo; |
|
54 } |
|
55 assertEq(i, 71); |
|
56 return true; |
|
57 } |
|
58 assertEq(f4(), true); |