Index: pkg/compiler/lib/src/types/flat_type_mask.dart |
diff --git a/pkg/compiler/lib/src/types/flat_type_mask.dart b/pkg/compiler/lib/src/types/flat_type_mask.dart |
index 59b573accb48283c7de992babaa37bdd736204e8..380c2fb1a25cfddf8642cb8c53b4f7bd193538c6 100644 |
--- a/pkg/compiler/lib/src/types/flat_type_mask.dart |
+++ b/pkg/compiler/lib/src/types/flat_type_mask.dart |
@@ -692,8 +692,18 @@ class FlatTypeMask implements TypeMask { |
// all classes in the receiver type [this]. It could be found only in a |
// subclass or in an inheritance-wise unrelated class in case of subtype |
// selectors. |
- if (isSubtype) return null; |
- if (base.isSubclassOf(enclosing)) return result; |
+ ClassWorld classWorld = compiler.world; |
+ if (isSubtype) { |
+ // if (classWorld.isUsedAsMixin(enclosing)) { |
+ if (classWorld.everySubtypeIsSubclassOfOrMixinUseOf(base, enclosing)) { |
+ return result; |
+ } |
+ //} |
+ return null; |
+ } else { |
+ if (base.isSubclassOf(enclosing)) return result; |
+ if (classWorld.isSubclassOfMixinUseOf(base, enclosing)) return result; |
+ } |
return null; |
} |