| Index: compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerTest.java
|
| diff --git a/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerTest.java b/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerTest.java
|
| index 2de3844c10e82e505142b7fb418b6991373cc0df..ce30bfaeab21c1ab59e819f6c7a4acea4a5f0685 100644
|
| --- a/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerTest.java
|
| +++ b/compiler/javatests/com/google/dart/compiler/type/TypeAnalyzerTest.java
|
| @@ -306,6 +306,27 @@ public class TypeAnalyzerTest extends TypeAnalyzerTestCase {
|
| analyzeClass(classes.get("OptionalParameter"), 1);
|
| }
|
|
|
| + public void testCyclicTypeVariable() {
|
| + Map<String, ClassElement> classes = loadSource(
|
| + "interface A<T> { }",
|
| + "typedef funcType<T>(T arg);",
|
| + "class B<T extends T> {}",
|
| + "class C<T extends A<T>> {}",
|
| + "class D<T extends funcType<T>> {}");
|
| + analyzeClasses(classes,
|
| + TypeErrorCode.CYCLIC_REFERENCE_TO_TYPE_VARIABLE);
|
| + ClassElement B = classes.get("B");
|
| + analyzeClass(B, 1);
|
| + assertEquals(1, B.getType().getArguments().size());
|
| + ClassElement C = classes.get("C");
|
| + analyzeClass(C, 0);
|
| + assertEquals(1, C.getType().getArguments().size());
|
| + ClassElement D = classes.get("D");
|
| + analyzeClass(D, 0);
|
| + assertEquals(1, D.getType().getArguments().size());
|
| +
|
| + }
|
| +
|
| public void testDoWhileStatement() {
|
| analyze("do {} while (true);");
|
| analyze("do {} while (null);");
|
|
|