OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 // Dart test program testing closures. | 4 // Dart test program testing closures. |
5 | 5 |
6 typedef T F<T>(T t); | 6 typedef T F<T>(T t); |
7 | 7 |
8 class Parameterized<T> { | 8 class Parameterized<T> { |
9 Parameterized() { } | 9 Parameterized() { } |
10 T mul3(F f, T t) { return 3*f(t); } | 10 T mul3(F f, T t) { return 3*f(t); } |
11 T test(T t) { | 11 T test(T t) { |
12 return mul3(T _(T t) { return 3*t; }, t); | 12 return mul3((T t) { return 3*t; }, t); |
13 } | 13 } |
14 } | 14 } |
15 | 15 |
16 class LocalFunction2Test { | 16 class LocalFunction2Test { |
17 static int f(int n) { | 17 static int f(int n) { |
18 int a = 0; | 18 int a = 0; |
19 var g = (int n) { | 19 var g = (int n) { |
20 a += n; | 20 a += n; |
21 return a; | 21 return a; |
22 }; | 22 }; |
23 var h = (int n) { | 23 var h = (int n) { |
24 a += 10*n; | 24 a += 10*n; |
25 return a; | 25 return a; |
26 }; | 26 }; |
27 return g(n) + h(n); | 27 return g(n) + h(n); |
28 } | 28 } |
29 | 29 |
30 static testMain() { | 30 static testMain() { |
31 Expect.equals(3 + 33, f(3)); | 31 Expect.equals(3 + 33, f(3)); |
32 Expect.equals(9.0, new Parameterized<double>().test(1.0)); | 32 Expect.equals(9.0, new Parameterized<double>().test(1.0)); |
33 } | 33 } |
34 } | 34 } |
35 | 35 |
36 main() { | 36 main() { |
37 LocalFunction2Test.testMain(); | 37 LocalFunction2Test.testMain(); |
38 } | 38 } |
OLD | NEW |