Index: sdk/lib/_internal/compiler/implementation/types/container_type_mask.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/types/container_type_mask.dart b/sdk/lib/_internal/compiler/implementation/types/container_type_mask.dart |
deleted file mode 100644 |
index 5f224627923bb986c1faf264317d03621d4b538a..0000000000000000000000000000000000000000 |
--- a/sdk/lib/_internal/compiler/implementation/types/container_type_mask.dart |
+++ /dev/null |
@@ -1,105 +0,0 @@ |
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-part of types; |
- |
-/// A [ContainerTypeMask] is a [TypeMask] for a specific allocation |
-/// site of a container (currently only List) that will get specialized |
-/// once the [TypeGraphInferrer] phase finds an element type for it. |
-class ContainerTypeMask extends ForwardingTypeMask { |
- final TypeMask forwardTo; |
- |
- // The [Node] where this type mask was created. |
- final Node allocationNode; |
- |
- // The [Element] where this type mask was created. |
- final Element allocationElement; |
- |
- // The element type of this container. |
- final TypeMask elementType; |
- |
- // The length of the container. |
- final int length; |
- |
- ContainerTypeMask(this.forwardTo, |
- this.allocationNode, |
- this.allocationElement, |
- this.elementType, |
- this.length); |
- |
- TypeMask nullable() { |
- return isNullable |
- ? this |
- : new ContainerTypeMask(forwardTo.nullable(), |
- allocationNode, |
- allocationElement, |
- elementType, |
- length); |
- } |
- |
- TypeMask nonNullable() { |
- return isNullable |
- ? new ContainerTypeMask(forwardTo.nonNullable(), |
- allocationNode, |
- allocationElement, |
- elementType, |
- length) |
- : this; |
- } |
- |
- bool get isContainer => true; |
- bool get isExact => true; |
- |
- bool equalsDisregardNull(other) { |
- if (other is! ContainerTypeMask) return false; |
- return super.equalsDisregardNull(other) && |
- allocationNode == other.allocationNode && |
- elementType == other.elementType && |
- length == other.length; |
- } |
- |
- TypeMask intersection(TypeMask other, ClassWorld classWorld) { |
- TypeMask forwardIntersection = forwardTo.intersection(other, classWorld); |
- if (forwardIntersection.isEmpty) return forwardIntersection; |
- return forwardIntersection.isNullable |
- ? nullable() |
- : nonNullable(); |
- } |
- |
- TypeMask union(other, ClassWorld classWorld) { |
- if (this == other) { |
- return this; |
- } else if (equalsDisregardNull(other)) { |
- return other.isNullable ? other : this; |
- } else if (other.isEmpty) { |
- return other.isNullable ? this.nullable() : this; |
- } else if (other.isContainer |
- && elementType != null |
- && other.elementType != null) { |
- TypeMask newElementType = |
- elementType.union(other.elementType, classWorld); |
- int newLength = (length == other.length) ? length : null; |
- TypeMask newForwardTo = forwardTo.union(other.forwardTo, classWorld); |
- return new ContainerTypeMask( |
- newForwardTo, |
- allocationNode == other.allocationNode ? allocationNode : null, |
- allocationElement == other.allocationElement ? allocationElement |
- : null, |
- newElementType, newLength); |
- } else { |
- return forwardTo.union(other, classWorld); |
- } |
- } |
- |
- bool operator==(other) => super == other; |
- |
- int get hashCode { |
- return computeHashCode( |
- allocationNode, isNullable, elementType, length, forwardTo); |
- } |
- |
- String toString() { |
- return 'Container mask: $elementType length: $length type: $forwardTo'; |
- } |
-} |