| Index: sdk/lib/_internal/compiler/implementation/types/dictionary_type_mask.dart
 | 
| diff --git a/sdk/lib/_internal/compiler/implementation/types/dictionary_type_mask.dart b/sdk/lib/_internal/compiler/implementation/types/dictionary_type_mask.dart
 | 
| deleted file mode 100644
 | 
| index 27419779d58396fd34e9d5f4e5520016c7c2dde6..0000000000000000000000000000000000000000
 | 
| --- a/sdk/lib/_internal/compiler/implementation/types/dictionary_type_mask.dart
 | 
| +++ /dev/null
 | 
| @@ -1,118 +0,0 @@
 | 
| -// Copyright (c) 2014, 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 [DictionaryTypeMask] is a [TypeMask] for a specific allocation
 | 
| - * site of a map (currently only internal Map class) that is used as
 | 
| - * a dictionary, i.e. a mapping from a set of statically known strings
 | 
| - * to values. These typemasks only come into existence after the
 | 
| - * [TypeGraphInferrer] has successfully identified such a usage. Otherwise,
 | 
| - * the more general [MapTypeMask] is used.
 | 
| - */
 | 
| -class DictionaryTypeMask extends MapTypeMask {
 | 
| -  // The underlying key/value map of this dictionary.
 | 
| -  final Map<String, TypeMask> typeMap;
 | 
| -
 | 
| -  DictionaryTypeMask(forwardTo,
 | 
| -                     allocationNode,
 | 
| -                     allocationElement,
 | 
| -                     keyType, valueType,
 | 
| -                     this.typeMap) :
 | 
| -      super(forwardTo, allocationNode, allocationElement, keyType, valueType);
 | 
| -
 | 
| -  TypeMask nullable() {
 | 
| -    return isNullable
 | 
| -        ? this
 | 
| -        : new DictionaryTypeMask(forwardTo.nullable(),
 | 
| -                                 allocationNode,
 | 
| -                                 allocationElement,
 | 
| -                                 keyType, valueType,
 | 
| -                                 typeMap);
 | 
| -  }
 | 
| -
 | 
| -  TypeMask nonNullable() {
 | 
| -    return isNullable
 | 
| -        ? new DictionaryTypeMask(forwardTo.nonNullable(),
 | 
| -                                 allocationNode,
 | 
| -                                 allocationElement,
 | 
| -                                 keyType, valueType,
 | 
| -                                 typeMap)
 | 
| -        : this;
 | 
| -  }
 | 
| -
 | 
| -  bool get isDictionary => true;
 | 
| -  bool get isExact => true;
 | 
| -
 | 
| -  bool equalsDisregardNull(other) {
 | 
| -    if (other is! DictionaryTypeMask) return false;
 | 
| -    return allocationNode == other.allocationNode &&
 | 
| -           keyType == other.keyType &&
 | 
| -           valueType == other.valueType &&
 | 
| -           typeMap.keys.every((k) => other.typeMap.containsKey(k)) &&
 | 
| -           other.typeMap.keys.every((k) => typeMap.containsKey(k) &&
 | 
| -                                           typeMap[k] == other.typeMap[k]);
 | 
| -
 | 
| -  }
 | 
| -
 | 
| -  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.isDictionary) {
 | 
| -      TypeMask newForwardTo = forwardTo.union(other.forwardTo, classWorld);
 | 
| -      TypeMask newKeyType = keyType.union(other.keyType, classWorld);
 | 
| -      TypeMask newValueType = valueType.union(other.valueType, classWorld);
 | 
| -      Map<String, TypeMask> mappings = <String, TypeMask>{};
 | 
| -      typeMap.forEach((k,v) {
 | 
| -              if (!other.typeMap.containsKey(k)) {
 | 
| -                mappings[k] = v.nullable();
 | 
| -              }
 | 
| -            });
 | 
| -      other.typeMap.forEach((k,v) {
 | 
| -        if (typeMap.containsKey(k)) {
 | 
| -          mappings[k] = v.union(typeMap[k], classWorld);
 | 
| -        } else {
 | 
| -          mappings[k] = v.nullable();
 | 
| -        }
 | 
| -      });
 | 
| -      return new DictionaryTypeMask(newForwardTo, null, null,
 | 
| -                                    newKeyType, newValueType, mappings);
 | 
| -    } else if (other.isMap &&
 | 
| -               (other.keyType != null) &&
 | 
| -               (other.valueType != null)) {
 | 
| -      TypeMask newForwardTo = forwardTo.union(other.forwardTo, classWorld);
 | 
| -      TypeMask newKeyType = keyType.union(other.keyType, classWorld);
 | 
| -      TypeMask newValueType = valueType.union(other.valueType, classWorld);
 | 
| -      return new MapTypeMask(newForwardTo, null, null,
 | 
| -                             newKeyType, newValueType);
 | 
| -    } else {
 | 
| -      return forwardTo.union(other, classWorld);
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
| -  bool operator==(other) => super == other;
 | 
| -
 | 
| -  int get hashCode {
 | 
| -    return computeHashCode(
 | 
| -        allocationNode, isNullable, typeMap, forwardTo);
 | 
| -  }
 | 
| -
 | 
| -  String toString() {
 | 
| -    return
 | 
| -        'Dictionary mask: [$keyType/$valueType with $typeMap] type: $forwardTo';
 | 
| -  }
 | 
| -}
 | 
| 
 |