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 class Closure { | |
6 var x; | |
7 Closure(val) : this.x = val; | |
8 | |
9 foo() { | |
10 return fun() { | |
11 return x; | |
12 }; | |
13 } | |
14 | |
15 bar() { | |
16 return fun() { | |
17 return toto(); | |
18 }; | |
19 } | |
20 | |
21 toto() { | |
22 return x + 1; | |
23 } | |
24 | |
25 nestedClosure() { | |
26 var f = g() { return x; }; | |
27 return fun() { return f() + 2; }; | |
28 } | |
29 } | |
30 | |
31 main() { | |
32 var c = new Closure(499); | |
33 var f = c.foo(); | |
34 Expect.equals(499, f()); | |
35 Expect.equals(500, c.bar()()); | |
36 Expect.equals(501, c.nestedClosure()()); | |
37 } | |
OLD | NEW |