Index: pkg/compiler/lib/src/cps_ir/type_mask_system.dart |
diff --git a/pkg/compiler/lib/src/cps_ir/type_mask_system.dart b/pkg/compiler/lib/src/cps_ir/type_mask_system.dart |
index 25fb1c9e8c20394e22760ebd427f3cf34b1c17eb..0a21c3f657152af2c858ed7ef23181c27822e378 100644 |
--- a/pkg/compiler/lib/src/cps_ir/type_mask_system.dart |
+++ b/pkg/compiler/lib/src/cps_ir/type_mask_system.dart |
@@ -448,10 +448,8 @@ class TypeMaskSystem implements AbstractValueDomain { |
} |
@override |
- bool areDisjoint(TypeMask leftType, TypeMask rightType) { |
- TypeMask intersected = intersection(leftType, rightType); |
- return intersected.isEmpty && !intersected.isNullable; |
- } |
+ bool areDisjoint(TypeMask leftType, TypeMask rightType) => |
+ leftType.isDisjoint(rightType, classWorld); |
@override |
bool isMorePreciseOrEqual(TypeMask t1, TypeMask t2) { |
@@ -468,8 +466,8 @@ class TypeMaskSystem implements AbstractValueDomain { |
} |
if (type is types.InterfaceType) { |
TypeMask typeAsMask = allowNull |
- ? new TypeMask.subtype(type.element, classWorld) |
- : new TypeMask.nonNullSubtype(type.element, classWorld); |
+ ? new TypeMask.subtype(type.element, classWorld) |
+ : new TypeMask.nonNullSubtype(type.element, classWorld); |
if (areDisjoint(value, typeAsMask)) { |
// Disprove the subtype relation based on the class alone. |
return AbstractBool.False; |