Version 2.17.0-105.0.dev
Merge commit '3dbb3595c8f879b666d8bfdf45106e573fa89eb3' into 'dev'
diff --git a/sdk/lib/_internal/vm/lib/collection_patch.dart b/sdk/lib/_internal/vm/lib/collection_patch.dart
index 4755514..942dc83 100644
--- a/sdk/lib/_internal/vm/lib/collection_patch.dart
+++ b/sdk/lib/_internal/vm/lib/collection_patch.dart
@@ -849,72 +849,3 @@
E get current => _current as E;
}
-
-/**
- * A hash-based map that iterates keys and values in key insertion order.
- * This is never actually instantiated any more - the constructor always
- * returns an instance of _CompactLinkedHashMap or _InternalLinkedHashMap,
- * which despite the names do not use links (but are insertion-ordered as if
- * they did).
- */
-@patch
-class LinkedHashMap<K, V> {
- @patch
- factory LinkedHashMap(
- {bool equals(K key1, K key2)?,
- int hashCode(K key)?,
- bool isValidKey(potentialKey)?}) {
- if (isValidKey == null) {
- if (hashCode == null) {
- if (equals == null) {
- return new _InternalLinkedHashMap<K, V>();
- }
- hashCode = _defaultHashCode;
- } else {
- if (identical(identityHashCode, hashCode) &&
- identical(identical, equals)) {
- return new _CompactLinkedIdentityHashMap<K, V>();
- }
- equals ??= _defaultEquals;
- }
- } else {
- hashCode ??= _defaultHashCode;
- equals ??= _defaultEquals;
- }
- return new _CompactLinkedCustomHashMap<K, V>(equals, hashCode, isValidKey);
- }
-
- @patch
- factory LinkedHashMap.identity() => new _CompactLinkedIdentityHashMap<K, V>();
-}
-
-@patch
-class LinkedHashSet<E> {
- @patch
- factory LinkedHashSet(
- {bool equals(E e1, E e2)?,
- int hashCode(E e)?,
- bool isValidKey(potentialKey)?}) {
- if (isValidKey == null) {
- if (hashCode == null) {
- if (equals == null) {
- return new _CompactLinkedHashSet<E>();
- }
- hashCode = _defaultHashCode;
- } else {
- if (identical(identityHashCode, hashCode) &&
- identical(identical, equals)) {
- return new _CompactLinkedIdentityHashSet<E>();
- }
- equals ??= _defaultEquals;
- }
- } else {
- hashCode ??= _defaultHashCode;
- equals ??= _defaultEquals;
- }
- return new _CompactLinkedCustomHashSet<E>(equals, hashCode, isValidKey);
- }
-
- @patch
- factory LinkedHashSet.identity() => new _CompactLinkedIdentityHashSet<E>();
-}
diff --git a/sdk/lib/_internal/vm/lib/hash_factories.dart b/sdk/lib/_internal/vm/lib/hash_factories.dart
index 9e45e8d..01558af 100644
--- a/sdk/lib/_internal/vm/lib/hash_factories.dart
+++ b/sdk/lib/_internal/vm/lib/hash_factories.dart
@@ -2,6 +2,67 @@
// 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.
-// This is a placeholder file which will shortly contain the LinkedhashMap and
-// LinkedHashSet patches from collection_patch.dart. The change is done in two
-// steps to ease rolling it into Flutter.
+// The [LinkedHashMap] and [LinkedHashSet] factory constructors return different
+// internal implementations depending on the supplied callback functions.
+
+@patch
+class LinkedHashMap<K, V> {
+ @patch
+ factory LinkedHashMap(
+ {bool equals(K key1, K key2)?,
+ int hashCode(K key)?,
+ bool isValidKey(potentialKey)?}) {
+ if (isValidKey == null) {
+ if (hashCode == null) {
+ if (equals == null) {
+ return new _InternalLinkedHashMap<K, V>();
+ }
+ hashCode = _defaultHashCode;
+ } else {
+ if (identical(identityHashCode, hashCode) &&
+ identical(identical, equals)) {
+ return new _CompactLinkedIdentityHashMap<K, V>();
+ }
+ equals ??= _defaultEquals;
+ }
+ } else {
+ hashCode ??= _defaultHashCode;
+ equals ??= _defaultEquals;
+ }
+ return new _CompactLinkedCustomHashMap<K, V>(equals, hashCode, isValidKey);
+ }
+
+ @patch
+ factory LinkedHashMap.identity() => new _CompactLinkedIdentityHashMap<K, V>();
+}
+
+@patch
+class LinkedHashSet<E> {
+ @patch
+ factory LinkedHashSet(
+ {bool equals(E e1, E e2)?,
+ int hashCode(E e)?,
+ bool isValidKey(potentialKey)?}) {
+ if (isValidKey == null) {
+ if (hashCode == null) {
+ if (equals == null) {
+ return new _CompactLinkedHashSet<E>();
+ }
+ hashCode = _defaultHashCode;
+ } else {
+ if (identical(identityHashCode, hashCode) &&
+ identical(identical, equals)) {
+ return new _CompactLinkedIdentityHashSet<E>();
+ }
+ equals ??= _defaultEquals;
+ }
+ } else {
+ hashCode ??= _defaultHashCode;
+ equals ??= _defaultEquals;
+ }
+ return new _CompactLinkedCustomHashSet<E>(equals, hashCode, isValidKey);
+ }
+
+ @patch
+ factory LinkedHashSet.identity() => new _CompactLinkedIdentityHashSet<E>();
+}
diff --git a/tools/VERSION b/tools/VERSION
index 5c8d4b8..a6e48bd 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 17
PATCH 0
-PRERELEASE 104
+PRERELEASE 105
PRERELEASE_PATCH 0
\ No newline at end of file