blob: 4217e38c83aef9cfa701649c0bc5dd6dfa674a5e [file] [log] [blame]
// Copyright (c) 2022, 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.
@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 (identical(identityHashCode, hashCode) &&
identical(identical, equals)) {
return new _CompactLinkedIdentityHashMap<K, V>();
}
}
hashCode ??= _defaultHashCode;
equals ??= _defaultEquals;
return new _CompactLinkedCustomHashMap<K, V>(equals, hashCode, isValidKey);
}
@pragma("wasm:entry-point")
factory LinkedHashMap._default() =>
_CompactLinkedCustomHashMap<K, V>(_defaultEquals, _defaultHashCode, null);
@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 (identical(identityHashCode, hashCode) &&
identical(identical, equals)) {
return new _CompactLinkedIdentityHashSet<E>();
}
}
hashCode ??= _defaultHashCode;
equals ??= _defaultEquals;
return new _CompactLinkedCustomHashSet<E>(equals, hashCode, isValidKey);
}
@patch
factory LinkedHashSet.identity() => new _CompactLinkedIdentityHashSet<E>();
}