| Index: pkg/compiler/lib/src/types/type_mask.dart
|
| diff --git a/pkg/compiler/lib/src/types/type_mask.dart b/pkg/compiler/lib/src/types/type_mask.dart
|
| index cd92ed968ebeddcffdcbf6330f76df086d32fed4..a3ba10ddf23977d71e616484b0a303dda584a57a 100644
|
| --- a/pkg/compiler/lib/src/types/type_mask.dart
|
| +++ b/pkg/compiler/lib/src/types/type_mask.dart
|
| @@ -77,30 +77,30 @@ class TypeMaskStrategy implements SelectorConstraintsStrategy {
|
| */
|
| abstract class TypeMask implements ReceiverConstraint, AbstractValue {
|
| factory TypeMask(
|
| - ClassElement base, int kind, bool isNullable, ClosedWorld closedWorld) {
|
| + Entity base, int kind, bool isNullable, ClosedWorld closedWorld) {
|
| return new FlatTypeMask.normalized(
|
| base, (kind << 1) | (isNullable ? 1 : 0), closedWorld);
|
| }
|
|
|
| const factory TypeMask.empty() = FlatTypeMask.empty;
|
|
|
| - factory TypeMask.exact(ClassElement base, ClosedWorld closedWorld) {
|
| + factory TypeMask.exact(Entity base, ClosedWorld closedWorld) {
|
| assert(invariant(base, closedWorld.isInstantiated(base),
|
| message: () => "Cannot create exact type mask for uninstantiated "
|
| "class $base.\n${closedWorld.dump(base)}"));
|
| return new FlatTypeMask.exact(base);
|
| }
|
|
|
| - factory TypeMask.exactOrEmpty(ClassElement base, ClosedWorld closedWorld) {
|
| + factory TypeMask.exactOrEmpty(Entity base, ClosedWorld closedWorld) {
|
| if (closedWorld.isInstantiated(base)) return new FlatTypeMask.exact(base);
|
| return const TypeMask.empty();
|
| }
|
|
|
| - factory TypeMask.subclass(ClassElement base, ClosedWorld closedWorld) {
|
| + factory TypeMask.subclass(Entity base, ClosedWorld closedWorld) {
|
| assert(invariant(base, closedWorld.isInstantiated(base),
|
| message: () => "Cannot create subclass type mask for uninstantiated "
|
| "class $base.\n${closedWorld.dump(base)}"));
|
| - ClassElement topmost = closedWorld.getLubOfInstantiatedSubclasses(base);
|
| + Entity topmost = closedWorld.getLubOfInstantiatedSubclasses(base);
|
| if (topmost == null) {
|
| return new TypeMask.empty();
|
| } else if (closedWorld.hasAnyStrictSubclass(topmost)) {
|
| @@ -110,8 +110,8 @@ abstract class TypeMask implements ReceiverConstraint, AbstractValue {
|
| }
|
| }
|
|
|
| - factory TypeMask.subtype(ClassElement base, ClosedWorld closedWorld) {
|
| - ClassElement topmost = closedWorld.getLubOfInstantiatedSubtypes(base);
|
| + factory TypeMask.subtype(Entity base, ClosedWorld closedWorld) {
|
| + Entity topmost = closedWorld.getLubOfInstantiatedSubtypes(base);
|
| if (topmost == null) {
|
| return new TypeMask.empty();
|
| }
|
| @@ -127,26 +127,25 @@ abstract class TypeMask implements ReceiverConstraint, AbstractValue {
|
|
|
| const factory TypeMask.nonNullEmpty() = FlatTypeMask.nonNullEmpty;
|
|
|
| - factory TypeMask.nonNullExact(ClassElement base, ClosedWorld closedWorld) {
|
| + factory TypeMask.nonNullExact(Entity base, ClosedWorld closedWorld) {
|
| assert(invariant(base, closedWorld.isInstantiated(base),
|
| message: () => "Cannot create exact type mask for uninstantiated "
|
| "class $base.\n${closedWorld.dump(base)}"));
|
| return new FlatTypeMask.nonNullExact(base);
|
| }
|
|
|
| - factory TypeMask.nonNullExactOrEmpty(
|
| - ClassElement base, ClosedWorld closedWorld) {
|
| + factory TypeMask.nonNullExactOrEmpty(Entity base, ClosedWorld closedWorld) {
|
| if (closedWorld.isInstantiated(base)) {
|
| return new FlatTypeMask.nonNullExact(base);
|
| }
|
| return const TypeMask.nonNullEmpty();
|
| }
|
|
|
| - factory TypeMask.nonNullSubclass(ClassElement base, ClosedWorld closedWorld) {
|
| + factory TypeMask.nonNullSubclass(Entity base, ClosedWorld closedWorld) {
|
| assert(invariant(base, closedWorld.isInstantiated(base),
|
| message: () => "Cannot create subclass type mask for uninstantiated "
|
| "class $base.\n${closedWorld.dump(base)}"));
|
| - ClassElement topmost = closedWorld.getLubOfInstantiatedSubclasses(base);
|
| + Entity topmost = closedWorld.getLubOfInstantiatedSubclasses(base);
|
| if (topmost == null) {
|
| return new TypeMask.nonNullEmpty();
|
| } else if (closedWorld.hasAnyStrictSubclass(topmost)) {
|
| @@ -156,8 +155,8 @@ abstract class TypeMask implements ReceiverConstraint, AbstractValue {
|
| }
|
| }
|
|
|
| - factory TypeMask.nonNullSubtype(ClassElement base, ClosedWorld closedWorld) {
|
| - ClassElement topmost = closedWorld.getLubOfInstantiatedSubtypes(base);
|
| + factory TypeMask.nonNullSubtype(Entity base, ClosedWorld closedWorld) {
|
| + Entity topmost = closedWorld.getLubOfInstantiatedSubtypes(base);
|
| if (topmost == null) {
|
| return new TypeMask.nonNullEmpty();
|
| }
|
| @@ -287,7 +286,7 @@ abstract class TypeMask implements ReceiverConstraint, AbstractValue {
|
| bool containsOnlyNum(ClosedWorld closedWorld);
|
| bool containsOnlyBool(ClosedWorld closedWorld);
|
| bool containsOnlyString(ClosedWorld closedWorld);
|
| - bool containsOnly(ClassElement element);
|
| + bool containsOnly(Entity cls);
|
|
|
| /**
|
| * Compares two [TypeMask] objects for structural equality.
|
| @@ -316,23 +315,21 @@ abstract class TypeMask implements ReceiverConstraint, AbstractValue {
|
| /**
|
| * Returns whether this type mask is an instance of [cls].
|
| */
|
| - bool satisfies(ClassElement cls, ClosedWorld closedWorld);
|
| + bool satisfies(Entity cls, ClosedWorld closedWorld);
|
|
|
| /**
|
| - * Returns whether or not this type mask contains the given type.
|
| + * Returns whether or not this type mask contains the given class [cls].
|
| */
|
| - bool contains(ClassElement type, ClosedWorld closedWorld);
|
| + bool contains(Entity cls, ClosedWorld closedWorld);
|
|
|
| /**
|
| * Returns whether or not this type mask contains all types.
|
| */
|
| bool containsAll(ClosedWorld closedWorld);
|
|
|
| - /**
|
| - * Returns the [ClassElement] if this type represents a single class,
|
| - * otherwise returns `null`. This method is conservative.
|
| - */
|
| - ClassElement singleClass(ClosedWorld closedWorld);
|
| + /// Returns the [Entity] if this type represents a single class, otherwise
|
| + /// returns `null`. This method is conservative.
|
| + Entity singleClass(ClosedWorld closedWorld);
|
|
|
| /**
|
| * Returns a type mask representing the union of [this] and [other].
|
|
|