Index: pkg/compiler/lib/src/types/union_type_mask.dart |
diff --git a/pkg/compiler/lib/src/types/union_type_mask.dart b/pkg/compiler/lib/src/types/union_type_mask.dart |
index 9cd5bcb023255f54db93311b7f6345d5db80c9ad..f05880a895cf50f71c04203efb7aea76f5354a7c 100644 |
--- a/pkg/compiler/lib/src/types/union_type_mask.dart |
+++ b/pkg/compiler/lib/src/types/union_type_mask.dart |
@@ -20,7 +20,8 @@ class UnionTypeMask implements TypeMask { |
} |
static TypeMask unionOf(Iterable<TypeMask> masks, ClassWorld classWorld) { |
- assert(masks.every((mask) => TypeMask.assertIsNormalized(mask, classWorld))); |
+ assert( |
+ masks.every((mask) => TypeMask.assertIsNormalized(mask, classWorld))); |
List<FlatTypeMask> disjoint = <FlatTypeMask>[]; |
unionOfHelper(masks, disjoint, classWorld); |
if (disjoint.isEmpty) return new TypeMask.nonNullEmpty(); |
@@ -34,8 +35,7 @@ class UnionTypeMask implements TypeMask { |
} |
static void unionOfHelper(Iterable<TypeMask> masks, |
- List<FlatTypeMask> disjoint, |
- ClassWorld classWorld) { |
+ List<FlatTypeMask> disjoint, ClassWorld classWorld) { |
// TODO(johnniwinther): Impose an order on the mask to ensure subclass masks |
// are preferred to subtype masks. |
for (TypeMask mask in masks) { |
@@ -103,7 +103,8 @@ class UnionTypeMask implements TypeMask { |
int bestKind; |
int bestSize; |
for (ClassElement candidate in candidates) { |
- bool isInstantiatedStrictSubclass(cls) => cls != candidate && |
+ bool isInstantiatedStrictSubclass(cls) => |
+ cls != candidate && |
classWorld.isDirectlyInstantiated(cls) && |
classWorld.isSubclassOf(cls, candidate); |
@@ -138,8 +139,7 @@ class UnionTypeMask implements TypeMask { |
other = TypeMask.nonForwardingMask(other); |
if (!other.isUnion && disjointMasks.contains(other)) return this; |
- List<FlatTypeMask> newList = |
- new List<FlatTypeMask>.from(disjointMasks); |
+ List<FlatTypeMask> newList = new List<FlatTypeMask>.from(disjointMasks); |
if (!other.isUnion) { |
newList.add(other); |
} else { |
@@ -322,17 +322,16 @@ class UnionTypeMask implements TypeMask { |
ClassElement singleClass(ClassWorld classWorld) => null; |
bool needsNoSuchMethodHandling(Selector selector, ClassWorld classWorld) { |
- return disjointMasks.any( |
- (e) => e.needsNoSuchMethodHandling(selector, classWorld)); |
+ return disjointMasks |
+ .any((e) => e.needsNoSuchMethodHandling(selector, classWorld)); |
} |
bool canHit(Element element, Selector selector, ClassWorld classWorld) { |
return disjointMasks.any((e) => e.canHit(element, selector, classWorld)); |
} |
- Element locateSingleElement(Selector selector, |
- TypeMask mask, |
- Compiler compiler) { |
+ Element locateSingleElement( |
+ Selector selector, TypeMask mask, Compiler compiler) { |
Element candidate; |
for (FlatTypeMask mask in disjointMasks) { |
Element current = mask.locateSingleElement(selector, mask, compiler); |
@@ -348,12 +347,13 @@ class UnionTypeMask implements TypeMask { |
} |
String toString() { |
- String masksString = (disjointMasks.map((TypeMask mask) => mask.toString()) |
- .toList()..sort()).join(", "); |
+ String masksString = |
+ (disjointMasks.map((TypeMask mask) => mask.toString()).toList()..sort()) |
+ .join(", "); |
return 'Union of [$masksString]'; |
} |
- bool operator==(other) { |
+ bool operator ==(other) { |
if (identical(this, other)) return true; |
bool containsAll() { |
@@ -363,10 +363,10 @@ class UnionTypeMask implements TypeMask { |
}); |
} |
- return other is UnionTypeMask |
- && other.isNullable == isNullable |
- && other.disjointMasks.length == disjointMasks.length |
- && containsAll(); |
+ return other is UnionTypeMask && |
+ other.isNullable == isNullable && |
+ other.disjointMasks.length == disjointMasks.length && |
+ containsAll(); |
} |
int get hashCode { |