| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 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 | 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 | 4 |
| 5 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
| 6 | 6 |
| 7 closure0() { | 7 closure0() { |
| 8 var f = fib(i) { | 8 var fib; |
| 9 fib = (i) { |
| 9 if (i < 2) return i; | 10 if (i < 2) return i; |
| 10 return fib(i - 1) + fib(i - 2); | 11 return fib(i - 1) + fib(i - 2); |
| 11 }; | 12 }; |
| 12 Expect.equals(5, f(5)); | 13 Expect.equals(5, fib(5)); |
| 13 } | 14 } |
| 14 | 15 |
| 15 closure1() { | 16 closure1() { |
| 16 var decr1 = 0; | 17 var decr1 = 0; |
| 17 var decr2 = 0; | 18 var decr2 = 0; |
| 18 var f = fib(i) { | 19 var fib; |
| 20 fib = (i) { |
| 19 if (i < 2) return i; | 21 if (i < 2) return i; |
| 20 return fib(i - decr1) + fib(i - decr2); | 22 return fib(i - decr1) + fib(i - decr2); |
| 21 }; | 23 }; |
| 22 decr1++; | 24 decr1++; |
| 23 decr2 += 2; | 25 decr2 += 2; |
| 24 Expect.equals(5, f(5)); | 26 Expect.equals(5, fib(5)); |
| 25 } | 27 } |
| 26 | 28 |
| 27 closure2() { | 29 closure2() { |
| 28 var f = fun(doReturnClosure) { | 30 var f; |
| 31 f = (doReturnClosure) { |
| 29 if (doReturnClosure) { | 32 if (doReturnClosure) { |
| 30 return inner() => fun(false); | 33 return () => f(false); |
| 31 } else { | 34 } else { |
| 32 return 499; | 35 return 499; |
| 33 } | 36 } |
| 34 }; | 37 }; |
| 35 var g = f(true); | 38 var g = f(true); |
| 36 Expect.equals(499, g()); | 39 Expect.equals(499, g()); |
| 37 } | 40 } |
| 38 | 41 |
| 39 main() { | 42 main() { |
| 40 closure0(); | 43 closure0(); |
| 41 closure1(); | 44 closure1(); |
| 42 closure2(); | 45 closure2(); |
| 43 } | 46 } |
| OLD | NEW |