Index: test/codegen/language/recursive_inheritance_test.dart |
diff --git a/test/codegen/language/recursive_inheritance_test.dart b/test/codegen/language/recursive_inheritance_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1d513ae5a3a156ddd297c4fd5d55813e95a0a1e0 |
--- /dev/null |
+++ b/test/codegen/language/recursive_inheritance_test.dart |
@@ -0,0 +1,24 @@ |
+// 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. |
+ |
+import "package:expect/expect.dart"; |
+ |
+// Regression test for recursive inheritance patterns |
+abstract class Comparable<T> { |
+ int compare(T a); |
+} |
+class MI<T extends MI<T>> { |
+} |
+ |
+class PMI<T extends Comparable<T>> extends MI<PMI<T>> {} |
+ |
+void main() { |
+ var a = new MI(); |
+ var b = new PMI(); |
+ a = b; |
+ Expect.isTrue(a is MI); |
+ Expect.isTrue(b is PMI); |
+ Expect.isTrue(b is MI); |
+ Expect.isTrue(b is MI<PMI>); |
+} |