|  | // 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. | 
|  |  | 
|  | import "package:expect/expect.dart"; | 
|  |  | 
|  | typedef T F<T>(T t); | 
|  |  | 
|  | class Parameterized<T> { | 
|  | Parameterized() {} | 
|  | T mul3(F<T> f, T t) { | 
|  | return 3 * f(t); //# 01: compile-time error | 
|  | } | 
|  |  | 
|  | T test(T t) { | 
|  | return mul3((T t) { | 
|  | return 3 * t; //# 02: compile-time error | 
|  | }, 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(); | 
|  | } |