Index: compiler/java/com/google/dart/compiler/type/Types.java |
diff --git a/compiler/java/com/google/dart/compiler/type/Types.java b/compiler/java/com/google/dart/compiler/type/Types.java |
index 021ec432079972abe10a3e3ba7c2c660ff7fe7db..14faa69525a74218929789f859a36ec793aab128 100644 |
--- a/compiler/java/com/google/dart/compiler/type/Types.java |
+++ b/compiler/java/com/google/dart/compiler/type/Types.java |
@@ -213,6 +213,10 @@ public class Types { |
intf = asSupertype(interfaceType, intf); |
types.addAll(getSuperTypes(intf)); |
} |
+ for (InterfaceType mixin : interfaceType.getElement().getMixins()) { |
+ mixin = asSupertype(interfaceType, mixin); |
+ types.add(mixin); |
+ } |
if (!interfaceType.getElement().isInterface()) { |
InterfaceType superClass = interfaceType.getElement().getSupertype(); |
superClass= asSupertype(interfaceType, superClass); |
@@ -545,13 +549,19 @@ public class Types { |
} |
} |
// interfaces |
- for (InterfaceType intrface : tElement.getInterfaces()) { |
- InterfaceType result = checkedAsInstanceOf(asSupertype(ti, intrface), element, |
+ for (InterfaceType intf : tElement.getInterfaces()) { |
+ InterfaceType result = checkedAsInstanceOf(asSupertype(ti, intf), element, |
variablesReferenced, checkedTypes); |
if (result != null) { |
return result; |
} |
} |
+ // mixins |
+ for (InterfaceType mixin : tElement.getMixins()) { |
+ if (mixin.getElement().equals(element)) { |
+ return asSupertype(ti, mixin); |
+ } |
+ } |
// no |
return null; |
} |