Index: frog/tests/leg_only/src/ClosureCapture3Test.dart |
diff --git a/frog/tests/leg_only/src/ClosureCapture3Test.dart b/frog/tests/leg_only/src/ClosureCapture3Test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d38b715fd108e906f90648f676ba9f863a0330c7 |
--- /dev/null |
+++ b/frog/tests/leg_only/src/ClosureCapture3Test.dart |
@@ -0,0 +1,37 @@ |
+// 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. |
+ |
+class Closure { |
+ var x; |
+ Closure(val) : this.x = val; |
+ |
+ foo() { |
+ return fun() { |
+ return x; |
+ }; |
+ } |
+ |
+ bar() { |
+ return fun() { |
+ return toto(); |
+ }; |
+ } |
+ |
+ toto() { |
+ return x + 1; |
+ } |
+ |
+ nestedClosure() { |
+ var f = g() { return x; }; |
+ return fun() { return f() + 2; }; |
+ } |
+} |
+ |
+main() { |
+ var c = new Closure(499); |
+ var f = c.foo(); |
+ Expect.equals(499, f()); |
+ Expect.equals(500, c.bar()()); |
+ Expect.equals(501, c.nestedClosure()()); |
+} |