Index: pkg/kernel/testcases/reify/closure_test.dart |
diff --git a/pkg/kernel/testcases/reify/closure_test.dart b/pkg/kernel/testcases/reify/closure_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..17206bcc16a7734800a1329b324e77f68b86ed13 |
--- /dev/null |
+++ b/pkg/kernel/testcases/reify/closure_test.dart |
@@ -0,0 +1,49 @@ |
+// Copyright (c) 2016, 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. |
+ |
+library closure_test; |
+ |
+import 'test_base.dart'; |
+ |
+class A {} |
+ |
+class B {} |
+ |
+typedef B A2B(A a); |
+typedef A B2A(B b); |
+ |
+bar(A a) { |
+ return null; |
+} |
+ |
+B baz(a) { |
+ return null; |
+} |
+ |
+main() { |
+ B foo(A a) { |
+ return null; |
+ } |
+ |
+ A qux(B b) { |
+ return null; |
+ } |
+ |
+ expectTrue(foo is A2B); |
+ expectTrue(qux is! A2B); |
+ expectTrue(foo is! B2A); |
+ expectTrue(qux is B2A); |
+ |
+ expectTrue(bar is A2B); |
+ expectTrue(bar is! B2A); |
+ expectTrue(baz is A2B); |
+ expectTrue(baz is! B2A); |
+ |
+ var rab = bar; |
+ var zab = baz; |
+ expectTrue(rab is A2B); |
+ expectTrue(rab is! B2A); |
+ expectTrue(zab is A2B); |
+ expectTrue(zab is! B2A); |
+} |