| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| // Dart test program testing closures. |
| |
| // @dart = 2.9 |
| |
| import "package:expect/expect.dart"; |
| |
| typedef T F<T>(T t); |
| |
| class Parameterized<T> { |
| Parameterized() {} |
| T mul3(F<T> f, T t) { |
| return (3 as dynamic) * f(t); |
| } |
| |
| T test(T t) { |
| return mul3((T t) { |
| return (3 as dynamic) * t; |
| }, t); |
| } |
| } |
| |
| class LocalFunction2Test { |
| static int f(int n) { |
| int a = 0; |
| var g = (int n) { |
| a += n; |
| return a; |
| }; |
| var h = (int n) { |
| a += 10 * n; |
| return a; |
| }; |
| return g(n) + h(n); |
| } |
| |
| static testMain() { |
| Expect.equals(3 + 33, f(3)); |
| Expect.equals(9.0, new Parameterized<double>().test(1.0)); |
| } |
| } |
| |
| main() { |
| LocalFunction2Test.testMain(); |
| } |