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..b16655d92e2f2963431bd14da535ee1a2ef3b205 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)) { |
Siggi Cherem (dart-lang)
2016/08/29 19:26:00
delete?
|
+ if (classWorld.everySubtypeIsSubclassOrMixinOf(base, enclosing)) { |
+ return result; |
+ } |
+ //} |
+ return null; |
+ } else { |
+ if (base.isSubclassOf(enclosing)) return result; |
+ if (classWorld.isSubclassOfMixinOf(base, enclosing)) return result; |
+ } |
return null; |
} |