Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1392)

Unified Diff: pkg/compiler/lib/src/types/union_type_mask.dart

Issue 2622583004: Use entities in all masks. (Closed)
Patch Set: Update comment. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/types/type_mask.dart ('k') | pkg/compiler/lib/src/world.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 40305ccffac9ade677ab8f2caa6f6b925b85058d..2832b75e8cb508ec5969ad5411f2179216546dc6 100644
--- a/pkg/compiler/lib/src/types/union_type_mask.dart
+++ b/pkg/compiler/lib/src/types/union_type_mask.dart
@@ -97,13 +97,14 @@ class UnionTypeMask implements TypeMask {
bool isNullable = masks.any((e) => e.isNullable);
List masksBases = masks.map((mask) => mask.base).toList();
- Iterable<Entity> candidates = closedWorld.commonSupertypesOf(masksBases);
+ Iterable<ClassEntity> candidates =
+ closedWorld.commonSupertypesOf(masksBases);
// Compute the best candidate and its kind.
- Entity bestElement;
+ ClassEntity bestElement;
int bestKind;
int bestSize;
- for (Entity candidate in candidates) {
+ for (ClassEntity candidate in candidates) {
bool isInstantiatedStrictSubclass(cls) =>
cls != candidate &&
closedWorld.isExplicitlyInstantiated(cls) &&
@@ -232,14 +233,14 @@ class UnionTypeMask implements TypeMask {
// Check we cover the base class.
if (!contains(flat.base, closedWorld)) return false;
// Check for other members.
- Iterable<Entity> members;
+ Iterable<ClassEntity> members;
if (flat.isSubclass) {
members = closedWorld.strictSubclassesOf(flat.base);
} else {
assert(flat.isSubtype);
members = closedWorld.strictSubtypesOf(flat.base);
}
- return members.every((Entity cls) => this.contains(cls, closedWorld));
+ return members.every((ClassEntity cls) => this.contains(cls, closedWorld));
}
bool isInMask(TypeMask other, ClosedWorld closedWorld) {
@@ -307,15 +308,15 @@ class UnionTypeMask implements TypeMask {
return disjointMasks.every((mask) => mask.containsOnlyString(closedWorld));
}
- bool containsOnly(Entity element) {
+ bool containsOnly(ClassEntity element) {
return disjointMasks.every((mask) => mask.containsOnly(element));
}
- bool satisfies(Entity cls, ClosedWorld closedWorld) {
+ bool satisfies(ClassEntity cls, ClosedWorld closedWorld) {
return disjointMasks.every((mask) => mask.satisfies(cls, closedWorld));
}
- bool contains(Entity cls, ClosedWorld closedWorld) {
+ bool contains(ClassEntity cls, ClosedWorld closedWorld) {
return disjointMasks.any((e) => e.contains(cls, closedWorld));
}
@@ -323,7 +324,7 @@ class UnionTypeMask implements TypeMask {
return disjointMasks.any((mask) => mask.containsAll(closedWorld));
}
- Entity singleClass(ClosedWorld closedWorld) => null;
+ ClassEntity singleClass(ClosedWorld closedWorld) => null;
bool needsNoSuchMethodHandling(Selector selector, ClosedWorld closedWorld) {
return disjointMasks
@@ -331,15 +332,14 @@ class UnionTypeMask implements TypeMask {
}
bool canHit(
- MemberElement element, Selector selector, ClosedWorld closedWorld) {
+ MemberEntity element, Selector selector, ClosedWorld closedWorld) {
return disjointMasks.any((e) => e.canHit(element, selector, closedWorld));
}
- MemberElement locateSingleElement(
- Selector selector, ClosedWorld closedWorld) {
- MemberElement candidate;
+ MemberEntity locateSingleElement(Selector selector, ClosedWorld closedWorld) {
+ MemberEntity candidate;
for (FlatTypeMask mask in disjointMasks) {
- MemberElement current = mask.locateSingleElement(selector, closedWorld);
+ MemberEntity current = mask.locateSingleElement(selector, closedWorld);
if (current == null) {
return null;
} else if (candidate == null) {
« no previous file with comments | « pkg/compiler/lib/src/types/type_mask.dart ('k') | pkg/compiler/lib/src/world.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698