OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 closure0() { | |
6 var fs = []; | |
7 for (var x = 1; x <= 3; x++) { | |
8 fs.add(fun() { return x; }); | |
9 } | |
10 Expect.equals(3, fs.length); | |
11 Expect.equals(1, fs[0]()); | |
12 Expect.equals(2, fs[1]()); | |
13 Expect.equals(3, fs[2]()); | |
14 } | |
15 | |
16 closure1() { | |
17 var fs = []; | |
18 for (var x = 0; x < 6; x++) { | |
19 fs.add(fun() { return x; }); | |
20 x++; | |
21 } | |
22 Expect.equals(3, fs.length); | |
23 Expect.equals(1, fs[0]()); | |
24 Expect.equals(3, fs[1]()); | |
25 Expect.equals(5, fs[2]()); | |
26 } | |
27 | |
28 closure2() { | |
29 var input = [1, 2, 3]; | |
30 var fs = []; | |
31 for (var i = 0; i < input.length; i++) { | |
32 fs.add(fun() { return input[i]; }); | |
33 } | |
34 Expect.equals(3, fs.length); | |
35 Expect.equals(1, fs[0]()); | |
36 Expect.equals(2, fs[1]()); | |
37 Expect.equals(3, fs[2]()); | |
38 } | |
39 | |
40 closure3() { | |
41 var fs = []; | |
42 for (var i = 0; | |
43 i < 3; | |
44 (f() { | |
45 fs.add(g() => i); | |
46 i++; | |
47 })()) { | |
48 i++; | |
49 } | |
50 Expect.equals(2, fs.length); | |
51 Expect.equals(3, fs[0]()); | |
52 Expect.equals(4, fs[1]()); | |
53 } | |
54 | |
55 closure4() { | |
56 var g; | |
57 for (var i = 0; | |
58 (f() { | |
59 g = fun() => i; | |
60 return false; | |
61 })(); | |
62 i++){ | |
63 Expect.equals(false, true); | |
64 } | |
65 Expect.equals(0, g()); | |
66 } | |
67 | |
68 main() { | |
69 closure0(); | |
70 closure1(); | |
71 closure2(); | |
72 closure3(); | |
73 closure4(); | |
74 } | |
OLD | NEW |