| 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 closure0() { |  | 
| 6   var input = [1, 2, 3]; |  | 
| 7   var fs = []; |  | 
| 8   for (var x in input) { |  | 
| 9     fs.add(fun() { return x; }); |  | 
| 10   } |  | 
| 11   Expect.equals(3, fs.length); |  | 
| 12   Expect.equals(1, fs[0]()); |  | 
| 13   Expect.equals(2, fs[1]()); |  | 
| 14   Expect.equals(3, fs[2]()); |  | 
| 15 } |  | 
| 16 |  | 
| 17 closure1() { |  | 
| 18   var input = [1, 2, 3]; |  | 
| 19   var fs = []; |  | 
| 20   for (var x in input) { |  | 
| 21     fs.add(fun() { return x; }); |  | 
| 22     x++; |  | 
| 23   } |  | 
| 24   Expect.equals(3, fs.length); |  | 
| 25   Expect.equals(2, fs[0]()); |  | 
| 26   Expect.equals(3, fs[1]()); |  | 
| 27   Expect.equals(4, fs[2]()); |  | 
| 28 } |  | 
| 29 |  | 
| 30 closure2() { |  | 
| 31   var input = [1, 2, 3]; |  | 
| 32   var fs = []; |  | 
| 33   for (var i = 0; i < input.length; i++) { |  | 
| 34     var j = i; |  | 
| 35     fs.add(fun() { return input[j]; }); |  | 
| 36   } |  | 
| 37   Expect.equals(3, fs.length); |  | 
| 38   Expect.equals(1, fs[0]()); |  | 
| 39   Expect.equals(2, fs[1]()); |  | 
| 40   Expect.equals(3, fs[2]()); |  | 
| 41 } |  | 
| 42 |  | 
| 43 closure3() { |  | 
| 44   var input = [1, 2, 3]; |  | 
| 45   var fs = []; |  | 
| 46   for (var i = 0; i < input.length; i++) { |  | 
| 47     var x = input[i]; |  | 
| 48     fs.add(fun() { return x; }); |  | 
| 49     x++; |  | 
| 50   } |  | 
| 51   Expect.equals(3, fs.length); |  | 
| 52   Expect.equals(2, fs[0]()); |  | 
| 53   Expect.equals(3, fs[1]()); |  | 
| 54   Expect.equals(4, fs[2]()); |  | 
| 55 } |  | 
| 56 |  | 
| 57 closure4() { |  | 
| 58   var input = [1, 2, 3]; |  | 
| 59   var fs = []; |  | 
| 60   var x; |  | 
| 61   for (var i = 0; i < input.length; i++) { |  | 
| 62     x = input[i]; |  | 
| 63     fs.add(fun() { return x; }); |  | 
| 64     x++; |  | 
| 65   } |  | 
| 66   Expect.equals(3, fs.length); |  | 
| 67   Expect.equals(4, fs[0]()); |  | 
| 68   Expect.equals(4, fs[1]()); |  | 
| 69   Expect.equals(4, fs[2]()); |  | 
| 70 } |  | 
| 71 |  | 
| 72 closure5() { |  | 
| 73   var input = [1, 2, 3]; |  | 
| 74   var fs = []; |  | 
| 75   var i = 0; |  | 
| 76   do { |  | 
| 77     var x = input[i]; |  | 
| 78     fs.add(fun() { return x; }); |  | 
| 79   } while (++i < input.length); |  | 
| 80   Expect.equals(3, fs.length); |  | 
| 81   Expect.equals(1, fs[0]()); |  | 
| 82   Expect.equals(2, fs[1]()); |  | 
| 83   Expect.equals(3, fs[2]()); |  | 
| 84 } |  | 
| 85 |  | 
| 86 main() { |  | 
| 87   closure0(); |  | 
| 88   closure1(); |  | 
| 89   closure2(); |  | 
| 90   closure3(); |  | 
| 91   closure4(); |  | 
| 92   closure5(); |  | 
| 93 } |  | 
| OLD | NEW | 
|---|