| Index: pkg/dev_compiler/tool/input_sdk/private/linked_hash_map.dart
|
| diff --git a/pkg/dev_compiler/tool/input_sdk/private/linked_hash_map.dart b/pkg/dev_compiler/tool/input_sdk/private/linked_hash_map.dart
|
| index 19ab3632dfc807c060eb4a5a8cbf2c348dd7a0c0..36de62aa0450a847bf6d38971ef2ea6634c6893d 100644
|
| --- a/pkg/dev_compiler/tool/input_sdk/private/linked_hash_map.dart
|
| +++ b/pkg/dev_compiler/tool/input_sdk/private/linked_hash_map.dart
|
| @@ -11,6 +11,7 @@ part of dart._js_helper;
|
| //const _USE_ES6_MAPS = const bool.fromEnvironment("dart2js.use.es6.maps");
|
|
|
| class JsLinkedHashMap<K, V> implements LinkedHashMap<K, V>, InternalMap<K, V> {
|
| + @notNull
|
| int _length = 0;
|
|
|
| // The hash map contents are divided into three parts: one part for
|
| @@ -27,8 +28,8 @@ class JsLinkedHashMap<K, V> implements LinkedHashMap<K, V>, InternalMap<K, V> {
|
|
|
| // The keys and values are stored in cells that are linked together
|
| // to form a double linked list.
|
| - LinkedHashMapCell/*<K, V>*/ _first;
|
| - LinkedHashMapCell/*<K, V>*/ _last;
|
| + LinkedHashMapCell<K, V> _first;
|
| + LinkedHashMapCell<K, V> _last;
|
|
|
| // We track the number of modifications done to the key set of the
|
| // hash map to be able to throw when the map is modified while being
|
| @@ -51,8 +52,11 @@ class JsLinkedHashMap<K, V> implements LinkedHashMap<K, V>, InternalMap<K, V> {
|
| return new JsLinkedHashMap<K, V>();
|
| }
|
|
|
| + @notNull
|
| int get length => _length;
|
| + @notNull
|
| bool get isEmpty => _length == 0;
|
| + @notNull
|
| bool get isNotEmpty => !isEmpty;
|
|
|
| Iterable<K> get keys {
|
| @@ -63,6 +67,7 @@ class JsLinkedHashMap<K, V> implements LinkedHashMap<K, V>, InternalMap<K, V> {
|
| return new MappedIterable<K, V>(keys, (each) => this[each]);
|
| }
|
|
|
| + @notNull
|
| bool containsKey(Object key) {
|
| if (_isStringKey(key)) {
|
| var strings = _strings;
|
| @@ -77,6 +82,7 @@ class JsLinkedHashMap<K, V> implements LinkedHashMap<K, V>, InternalMap<K, V> {
|
| }
|
| }
|
|
|
| + @notNull
|
| bool internalContainsKey(Object key) {
|
| var rest = _rest;
|
| if (rest == null) return false;
|
| @@ -269,10 +275,12 @@ class JsLinkedHashMap<K, V> implements LinkedHashMap<K, V>, InternalMap<K, V> {
|
| _modified();
|
| }
|
|
|
| + @notNull
|
| static bool _isStringKey(var key) {
|
| return key is String;
|
| }
|
|
|
| + @notNull
|
| static bool _isNumericKey(var key) {
|
| // Only treat unsigned 30-bit integers as numeric keys. This way,
|
| // we avoid converting them to strings when we use them as keys in
|
| @@ -292,6 +300,7 @@ class JsLinkedHashMap<K, V> implements LinkedHashMap<K, V>, InternalMap<K, V> {
|
| return _getTableBucket(table, hash);
|
| }
|
|
|
| + @notNull
|
| int internalFindBucketIndex(var bucket, var key) {
|
| if (bucket == null) return -1;
|
| int length = JS('int', '#.length', bucket);
|
| @@ -321,6 +330,7 @@ class JsLinkedHashMap<K, V> implements LinkedHashMap<K, V>, InternalMap<K, V> {
|
| JS('void', 'delete #[#]', table, key);
|
| }
|
|
|
| + @notNull
|
| bool _containsTableEntry(var table, var key) {
|
| LinkedHashMapCell/*<K, V>*/ cell = _getTableCell(table, key);
|
| return cell != null;
|
|
|