Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1592)

Unified Diff: compiler/java/com/google/dart/compiler/resolver/SupertypeResolver.java

Issue 8948001: Updates dartc to recognize 'default' keyword on interface and updated factory method syntax (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Feedback from mmendez Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 {

Powered by Google App Engine
This is Rietveld 408576698