Index: compiler/java/com/google/dart/compiler/resolver/SupertypeResolver.java |
diff --git a/compiler/java/com/google/dart/compiler/resolver/SupertypeResolver.java b/compiler/java/com/google/dart/compiler/resolver/SupertypeResolver.java |
index 6af78affb2dada74c87410f12940b6059595aefa..0037be543d17bfefc94822b13fd52d9c382bc4a6 100644 |
--- a/compiler/java/com/google/dart/compiler/resolver/SupertypeResolver.java |
+++ b/compiler/java/com/google/dart/compiler/resolver/SupertypeResolver.java |
@@ -53,7 +53,7 @@ public class SupertypeResolver { |
supertype = null; |
} |
} else { |
- supertype = classContext.resolveClass(superclassNode, false); |
+ supertype = classContext.resolveClass(superclassNode, false, false); |
supertype.getClass(); // Quick null check. |
} |
if (supertype != null) { |
@@ -66,15 +66,17 @@ public class SupertypeResolver { |
assert classElement.getName().equals("Object") : classElement; |
} |
- InterfaceType defaultClass = classContext.resolveClass(node.getDefaultClass(), false); |
- if (defaultClass != null) { |
- Elements.setDefaultClass(classElement, defaultClass); |
- node.getDefaultClass().setType(defaultClass); |
+ if (node.getDefaultClass() != null) { |
+ Element defaultClassElement = classContext.resolveName(node.getDefaultClass().getExpression()); |
+ if (ElementKind.of(defaultClassElement).equals(ElementKind.CLASS)) { |
+ Elements.setDefaultClass(classElement, (InterfaceType)defaultClassElement.getType()); |
+ node.getDefaultClass().setType(defaultClassElement.getType()); |
+ } |
} |
if (node.getInterfaces() != null) { |
for (DartTypeNode cls : node.getInterfaces()) { |
- Elements.addInterface(classElement, classContext.resolveInterface(cls, false)); |
+ Elements.addInterface(classElement, classContext.resolveInterface(cls, false, false)); |
} |
} |
@@ -88,6 +90,7 @@ public class SupertypeResolver { |
classContext.resolveType( |
boundNode, |
false, |
+ false, |
ResolverErrorCode.NO_SUCH_TYPE); |
boundNode.setType(bound); |
} else { |