Index: tests/compiler/dart2js/resolver_test.dart |
diff --git a/tests/compiler/dart2js/resolver_test.dart b/tests/compiler/dart2js/resolver_test.dart |
index a0d433eee90f2d6b2cd6c845277f48f003700170..9cdd4d77ea850a767e8340a045ce81f6b09dc7e1 100644 |
--- a/tests/compiler/dart2js/resolver_test.dart |
+++ b/tests/compiler/dart2js/resolver_test.dart |
@@ -646,10 +646,20 @@ resolveConstructor(String script, String statement, String className, |
testClassHierarchy() { |
final MAIN = "main"; |
MockCompiler compiler = new MockCompiler(); |
+ compiler.parseScript("""class A extends A {} |
+ main() { return new A(); }"""); |
+ FunctionElement mainElement = compiler.mainApp.find(MAIN); |
+ compiler.resolver.resolve(mainElement); |
+ Expect.equals(0, compiler.warnings.length); |
+ Expect.equals(1, compiler.errors.length); |
+ Expect.equals(MessageKind.CYCLIC_CLASS_HIERARCHY, |
+ compiler.errors[0].message.kind); |
+ |
+ compiler = new MockCompiler(); |
compiler.parseScript("""class A extends B {} |
class B extends A {} |
main() { return new A(); }"""); |
- FunctionElement mainElement = compiler.mainApp.find(MAIN); |
+ mainElement = compiler.mainApp.find(MAIN); |
compiler.resolver.resolve(mainElement); |
Expect.equals(0, compiler.warnings.length); |
Expect.equals(2, compiler.errors.length); |
@@ -714,6 +724,17 @@ testClassHierarchy() { |
supertypes = aElement.allSupertypes; |
Expect.equals(<String>['A<E>', 'D', 'Object'].toString(), |
asSortedStrings(supertypes).toString()); |
+ |
+ compiler = new MockCompiler(); |
+ compiler.parseScript("""class A<T> {} |
+ class D extends A<int> implements A<double> {} |
+ main() { return new D(); }"""); |
+ mainElement = compiler.mainApp.find(MAIN); |
+ compiler.resolver.resolve(mainElement); |
+ Expect.equals(0, compiler.warnings.length); |
+ Expect.equals(1, compiler.errors.length); |
+ Expect.equals(MessageKind.MULTI_INHERITANCE, |
+ compiler.errors[0].message.kind); |
} |
testInitializers() { |