| // Copyright (c) 2012, 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. | |
| import "package:expect/expect.dart"; | |
| closure0() { | |
| var x = 499; | |
| var f = () { | |
| return x; | |
| }; | |
| Expect.equals(499, f()); | |
| } | |
| class A { | |
| closure1() { | |
| var x = 499; | |
| var f = () { | |
| return x; | |
| }; | |
| Expect.equals(499, f()); | |
| } | |
| } | |
| applyFun(f) { | |
| return f(); | |
| } | |
| closure2() { | |
| var x = 499; | |
| Expect.equals( | |
| 499, | |
| applyFun(() { | |
| return x; | |
| }), | |
| ); | |
| } | |
| closure3() { | |
| var y = 400; | |
| var f = (x) { | |
| return y + x; | |
| }; | |
| Expect.equals(499, f(99)); | |
| } | |
| applyFun2(f) { | |
| return f(400, 90); | |
| } | |
| closure4() { | |
| var z = 9; | |
| Expect.equals( | |
| 499, | |
| applyFun2((x, y) { | |
| return x + y + z; | |
| }), | |
| ); | |
| } | |
| closure5() { | |
| var x = 498; | |
| var f = () { | |
| return x; | |
| }; | |
| x++; | |
| Expect.equals(499, f()); | |
| } | |
| class A2 { | |
| closure6() { | |
| var x = 498; | |
| var f = () { | |
| return x; | |
| }; | |
| x++; | |
| Expect.equals(499, f()); | |
| } | |
| } | |
| closure7() { | |
| var x = 498; | |
| var f = () { | |
| return x; | |
| }; | |
| x++; | |
| Expect.equals(499, applyFun(f)); | |
| } | |
| closure8() { | |
| var y = 399; | |
| var f = (x) { | |
| return y + x; | |
| }; | |
| y++; | |
| Expect.equals(499, f(99)); | |
| } | |
| closure9() { | |
| var z = 9; | |
| Expect.equals( | |
| 499, | |
| applyFun2((x, y) { | |
| return x + y + z; | |
| }), | |
| ); | |
| } | |
| main() { | |
| closure0(); | |
| new A().closure1(); | |
| closure2(); | |
| closure3(); | |
| closure4(); | |
| closure5(); | |
| new A2().closure6(); | |
| closure7(); | |
| closure8(); | |
| closure9(); | |
| } |