| Index: sdk/lib/_internal/lib/constant_map.dart
|
| diff --git a/sdk/lib/_internal/lib/constant_map.dart b/sdk/lib/_internal/lib/constant_map.dart
|
| deleted file mode 100644
|
| index 22b513c9bf4f2bae1b9077185ac9bb5dcdad3d21..0000000000000000000000000000000000000000
|
| --- a/sdk/lib/_internal/lib/constant_map.dart
|
| +++ /dev/null
|
| @@ -1,145 +0,0 @@
|
| -// Copyright (c) 2012, 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 _js_helper;
|
| -
|
| -abstract class ConstantMap<K, V> implements Map<K, V> {
|
| - const ConstantMap._();
|
| -
|
| - bool get isEmpty => length == 0;
|
| -
|
| - bool get isNotEmpty => !isEmpty;
|
| -
|
| - String toString() => Maps.mapToString(this);
|
| -
|
| - _throwUnmodifiable() {
|
| - throw new UnsupportedError("Cannot modify unmodifiable Map");
|
| - }
|
| - void operator []=(K key, V val) => _throwUnmodifiable();
|
| - V putIfAbsent(K key, V ifAbsent()) => _throwUnmodifiable();
|
| - V remove(K key) => _throwUnmodifiable();
|
| - void clear() => _throwUnmodifiable();
|
| - void addAll(Map<K, V> other) => _throwUnmodifiable();
|
| -}
|
| -
|
| -class ConstantStringMap<K, V> extends ConstantMap<K, V>
|
| - implements _symbol_dev.EfficientLength {
|
| -
|
| - // This constructor is not used. The instantiation is shortcut by the
|
| - // compiler. It is here to make the uninitialized final fields legal.
|
| - const ConstantStringMap._(this.length, this._jsObject, this._keys)
|
| - : super._();
|
| -
|
| - final int length;
|
| - // A constant map is backed by a JavaScript object.
|
| - final _jsObject;
|
| - final List<K> _keys;
|
| -
|
| - bool containsValue(V needle) {
|
| - return values.any((V value) => value == needle);
|
| - }
|
| -
|
| - bool containsKey(Object key) {
|
| - if (key is! String) return false;
|
| - if ('__proto__' == key) return false;
|
| - return jsHasOwnProperty(_jsObject, key);
|
| - }
|
| -
|
| - V operator [](Object key) {
|
| - if (!containsKey(key)) return null;
|
| - return _fetch(key);
|
| - }
|
| -
|
| - // [_fetch] is the indexer for keys for which `containsKey(key)` is true.
|
| - _fetch(key) => jsPropertyAccess(_jsObject, key);
|
| -
|
| - void forEach(void f(K key, V value)) {
|
| - // Use a JS 'cast' to get efficient loop. Type inferrence doesn't get this
|
| - // since constant map representation is chosen after type inferrence and the
|
| - // instantiation is shortcut by the compiler.
|
| - var keys = JS('JSArray', '#', _keys);
|
| - for (int i = 0; i < keys.length; i++) {
|
| - var key = keys[i];
|
| - f(key, _fetch(key));
|
| - }
|
| - }
|
| -
|
| - Iterable<K> get keys {
|
| - return new _ConstantMapKeyIterable<K>(this);
|
| - }
|
| -
|
| - Iterable<V> get values {
|
| - return new MappedIterable<K, V>(_keys, (key) => _fetch(key));
|
| - }
|
| -}
|
| -
|
| -class ConstantProtoMap<K, V> extends ConstantStringMap<K, V> {
|
| - // This constructor is not used. The instantiation is shortcut by the
|
| - // compiler. It is here to make the uninitialized final fields legal.
|
| - ConstantProtoMap._(length, jsObject, keys, this._protoValue)
|
| - : super._(length, jsObject, keys);
|
| -
|
| - final V _protoValue;
|
| -
|
| - bool containsKey(Object key) {
|
| - if (key is! String) return false;
|
| - if ('__proto__' == key) return true;
|
| - return jsHasOwnProperty(_jsObject, key);
|
| - }
|
| -
|
| - _fetch(key) =>
|
| - '__proto__' == key ? _protoValue : jsPropertyAccess(_jsObject, key);
|
| -}
|
| -
|
| -class _ConstantMapKeyIterable<K> extends IterableBase<K> {
|
| - ConstantStringMap<K, dynamic> _map;
|
| - _ConstantMapKeyIterable(this._map);
|
| -
|
| - Iterator<K> get iterator => _map._keys.iterator;
|
| -}
|
| -
|
| -class GeneralConstantMap<K, V> extends ConstantMap<K, V> {
|
| - // This constructor is not used. The instantiation is shortcut by the
|
| - // compiler. It is here to make the uninitialized final fields legal.
|
| - GeneralConstantMap(this._jsData) : super._();
|
| -
|
| - // [_jsData] holds a key-value pair list.
|
| - final _jsData;
|
| -
|
| - // We cannot create the backing map on creation since hashCode interceptors
|
| - // have not been defined when constants are created.
|
| - Map<K, V> _getMap() {
|
| - if (JS('bool', r'!this.$map')) {
|
| - Map backingMap = new LinkedHashMap<K, V>();
|
| - JS('', r'this.$map = #', fillLiteralMap(_jsData, backingMap));
|
| - }
|
| - return JS('Map', r'this.$map');
|
| - }
|
| -
|
| - bool containsValue(V needle) {
|
| - return _getMap().containsValue(needle);
|
| - }
|
| -
|
| - bool containsKey(Object key) {
|
| - return _getMap().containsKey(key);
|
| - }
|
| -
|
| - V operator [](Object key) {
|
| - return _getMap()[key];
|
| - }
|
| -
|
| - void forEach(void f(K key, V value)) {
|
| - _getMap().forEach(f);
|
| - }
|
| -
|
| - Iterable<K> get keys {
|
| - return _getMap().keys;
|
| - }
|
| -
|
| - Iterable<V> get values {
|
| - return _getMap().values;
|
| - }
|
| -
|
| - int get length => _getMap().length;
|
| -}
|
|
|