Move map-related *Raw methods to Maps.kt and do some cleanup there.
Correct deprecation messages and replacements.
This commit is contained in:
@@ -25,7 +25,7 @@ private object EmptyMap : Map<Any, Nothing>, Serializable {
|
||||
}
|
||||
|
||||
/** Returns an empty read-only map of specified type. The returned map is serializable (JVM). */
|
||||
public fun emptyMap<K, V>(): Map<K, V> = EmptyMap as Map<K, V>
|
||||
public fun <K, V> emptyMap(): Map<K, V> = EmptyMap as Map<K, V>
|
||||
|
||||
/**
|
||||
* Returns a new read-only map with the specified contents, given as a list of pairs
|
||||
@@ -34,17 +34,17 @@ public fun emptyMap<K, V>(): Map<K, V> = EmptyMap as Map<K, V>
|
||||
*
|
||||
* The returned map is serializable (JVM).
|
||||
*/
|
||||
public fun mapOf<K, V>(vararg values: Pair<K, V>): Map<K, V> = if (values.size() > 0) linkedMapOf(*values) else emptyMap()
|
||||
public fun <K, V> mapOf(vararg values: Pair<K, V>): Map<K, V> = if (values.size() > 0) linkedMapOf(*values) else emptyMap()
|
||||
|
||||
/** Returns an empty read-only map. The returned map is serializable (JVM). */
|
||||
public fun mapOf<K, V>(): Map<K, V> = emptyMap()
|
||||
public fun <K, V> mapOf(): Map<K, V> = emptyMap()
|
||||
|
||||
/**
|
||||
* Returns an immutable map, mapping only the specified key to the
|
||||
* specified value. The returned map is serializable.
|
||||
*/
|
||||
@JvmVersion
|
||||
public fun mapOf<K, V>(keyValuePair: Pair<K, V>): Map<K, V> = Collections.singletonMap(keyValuePair.first, keyValuePair.second)
|
||||
public fun <K, V> mapOf(keyValuePair: Pair<K, V>): Map<K, V> = Collections.singletonMap(keyValuePair.first, keyValuePair.second)
|
||||
|
||||
/**
|
||||
* Returns a new [HashMap] with the specified contents, given as a list of pairs
|
||||
@@ -103,6 +103,24 @@ public fun <K,V> Map<K,V>?.orEmpty() : Map<K,V> = this ?: emptyMap()
|
||||
*/
|
||||
public operator fun <K,V> Map<K,V>.contains(key : K) : Boolean = containsKey(key)
|
||||
|
||||
/**
|
||||
* Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
public inline fun <K, V> Map<K, V>.getRaw(key: Any?): V? = (this as Map<Any?, V>).get(key)
|
||||
|
||||
/**
|
||||
* Returns `true` if the map contains the specified [key].
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
public inline fun <K> Map<K, *>.containsKeyRaw(key: Any?): Boolean = (this as Map<Any?, *>).containsKey(key)
|
||||
|
||||
/**
|
||||
* Returns `true` if the map maps one or more keys to the specified [value].
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
public inline fun <K> Map<K, *>.containsValueRaw(value: Any?): Boolean = (this as Map<K, Any?>).containsValue(value)
|
||||
|
||||
/**
|
||||
* Returns the key component of the map entry.
|
||||
*
|
||||
@@ -113,9 +131,8 @@ public operator fun <K,V> Map<K,V>.contains(key : K) : Boolean = containsKey(key
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
public operator fun <K, V> Map.Entry<K, V>.component1(): K {
|
||||
return getKey()
|
||||
}
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
public inline operator fun <K, V> Map.Entry<K, V>.component1(): K = key
|
||||
|
||||
/**
|
||||
* Returns the value component of the map entry.
|
||||
@@ -126,16 +143,13 @@ public operator fun <K, V> Map.Entry<K, V>.component1(): K {
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
public operator fun <K, V> Map.Entry<K, V>.component2(): V {
|
||||
return getValue()
|
||||
}
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
public inline operator fun <K, V> Map.Entry<K, V>.component2(): V = value
|
||||
|
||||
/**
|
||||
* Converts entry to [Pair] with key being first component and value being second.
|
||||
*/
|
||||
public fun <K, V> Map.Entry<K, V>.toPair(): Pair<K, V> {
|
||||
return Pair(getKey(), getValue())
|
||||
}
|
||||
public fun <K, V> Map.Entry<K, V>.toPair(): Pair<K, V> = Pair(key, value)
|
||||
|
||||
/**
|
||||
* Returns the value for the given key, or the result of the [defaultValue] function if there was no entry for the given key.
|
||||
@@ -173,10 +187,7 @@ public inline fun <K, V> MutableMap<K, V>.getOrPut(key: K, defaultValue: () -> V
|
||||
*
|
||||
* @sample test.collections.MapTest.iterateWithProperties
|
||||
*/
|
||||
public operator fun <K, V> Map<K, V>.iterator(): Iterator<Map.Entry<K, V>> {
|
||||
val entrySet = entrySet()
|
||||
return entrySet.iterator()
|
||||
}
|
||||
public operator fun <K, V> Map<K, V>.iterator(): Iterator<Map.Entry<K, V>> = entries.iterator()
|
||||
|
||||
/**
|
||||
* Populates the given `destination` [Map] with entries having the keys of this map and the values obtained
|
||||
@@ -236,7 +247,7 @@ public fun <K, V> MutableMap<K, V>.putAll(values: Sequence<Pair<K,V>>): Unit {
|
||||
* @sample test.collections.MapTest.mapValues
|
||||
*/
|
||||
public inline fun <K, V, R> Map<K, V>.mapValues(transform: (Map.Entry<K, V>) -> R): Map<K, R> {
|
||||
return mapValuesTo(LinkedHashMap<K, R>(size()), transform)
|
||||
return mapValuesTo(LinkedHashMap<K, R>(size), transform)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -246,7 +257,7 @@ public inline fun <K, V, R> Map<K, V>.mapValues(transform: (Map.Entry<K, V>) ->
|
||||
* @sample test.collections.MapTest.mapKeys
|
||||
*/
|
||||
public inline fun <K, V, R> Map<K, V>.mapKeys(transform: (Map.Entry<K, V>) -> R): Map<R, V> {
|
||||
return mapKeysTo(LinkedHashMap<R, V>(size()), transform)
|
||||
return mapKeysTo(LinkedHashMap<R, V>(size), transform)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,108 +3,106 @@
|
||||
|
||||
package kotlin
|
||||
|
||||
/**
|
||||
* Checks if all elements in the specified collection are contained in this collection.
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
public inline fun Collection<*>.containsAllRaw(collection: Collection<Any?>): Boolean = (this as Collection<Any?>).containsAll(collection)
|
||||
|
||||
/**
|
||||
* Removes a single instance of the specified element from this
|
||||
* collection, if it is present.
|
||||
*
|
||||
* @return `true` if the element has been successfully removed; `false` if it was not present in the collection.
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
public inline fun <E> MutableCollection<E>.removeRaw(element: Any?): Boolean = (this as MutableCollection<Any?>).remove(element)
|
||||
|
||||
/**
|
||||
* Removes all of this collection's elements that are also contained in the specified collection.
|
||||
*
|
||||
* @return `true` if any of the specified elements was removed from the collection, `false` if the collection was not modified.
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
public inline fun <E> MutableCollection<E>.removeAllRaw(collection: Collection<Any?>): Boolean = (this as MutableCollection<Any?>).removeAll(collection)
|
||||
|
||||
/**
|
||||
* Retains only the elements in this collection that are contained in the specified collection.
|
||||
*
|
||||
* @return `true` if any element was removed from the collection, `false` if the collection was not modified.
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
public inline fun <E> MutableCollection<E>.retainAllRaw(collection: Collection<Any?>): Boolean = (this as MutableCollection<Any?>).retainAll(collection)
|
||||
|
||||
|
||||
|
||||
@Deprecated("Use operator 'get' instead", ReplaceWith("this[index]"))
|
||||
public fun CharSequence.charAt(index: Int): Char = this[index]
|
||||
|
||||
@Deprecated("Use property 'size' instead", ReplaceWith("this.size"))
|
||||
@Deprecated("Use property 'size' instead", ReplaceWith("size"))
|
||||
public inline fun Collection<*>.size() = size
|
||||
|
||||
@Deprecated("Use property 'size' instead", ReplaceWith("this.size"))
|
||||
@Deprecated("Use property 'size' instead", ReplaceWith("size"))
|
||||
public inline fun Map<*, *>.size() = size
|
||||
|
||||
@Deprecated("Use property 'key' instead", ReplaceWith("this.key"))
|
||||
@Deprecated("Use property 'key' instead", ReplaceWith("key"))
|
||||
public fun <K, V> Map.Entry<K, V>.getKey(): K = key
|
||||
|
||||
|
||||
@Deprecated("Use containsAllRaw() instead.", ReplaceWith("containsAllRaw(collection)"))
|
||||
public fun <E> Collection<E>.containsAll(collection: Collection<Any?>): Boolean = containsAllRaw(collection)
|
||||
|
||||
|
||||
/*
|
||||
@kotlin.jvm.JvmName("containsAny")
|
||||
@Deprecated("Use containsRaw() instead.", ReplaceWith("containsRaw(element)"))
|
||||
public operator fun <T> Array<T>.contains(element: Any?): Boolean = containsRaw(element)
|
||||
|
||||
|
||||
@kotlin.jvm.JvmName("containsAny")
|
||||
@Deprecated("Use containsRaw() instead.", ReplaceWith("containsRaw(element)"))
|
||||
public operator fun Iterable<*>.contains(element: Any?): Boolean = containsRaw(element)
|
||||
|
||||
|
||||
@kotlin.jvm.JvmName("containsAny")
|
||||
@Deprecated("Use containsRaw() instead.", ReplaceWith("containsRaw(element)"))
|
||||
public operator fun <T> Sequence<T>.contains(element: Any?): Boolean = containsRaw(element)
|
||||
*/
|
||||
|
||||
/**
|
||||
* Checks if all elements in the specified collection are contained in this collection.
|
||||
*/
|
||||
public fun Collection<*>.containsAllRaw(collection: Collection<Any?>): Boolean = (this as Collection<Any?>).containsAll(collection)
|
||||
|
||||
public fun <E> MutableCollection<E>.removeRaw(element: Any?): Boolean = (this as MutableCollection<Any?>).remove(element)
|
||||
|
||||
public fun <E> MutableCollection<E>.removeAllRaw(collection: Collection<Any?>): Boolean = (this as MutableCollection<Any?>).removeAll(collection)
|
||||
|
||||
public fun <E> MutableCollection<E>.retainAllRaw(collection: Collection<Any?>): Boolean = (this as MutableCollection<Any?>).retainAll(collection)
|
||||
|
||||
public fun <K, V> Map<K, V>.getRaw(key: Any?): V? = (this as Map<Any?, V>).get(key)
|
||||
|
||||
public fun <K> Map<K, *>.containsKeyRaw(key: Any?): Boolean = (this as Map<Any?, *>).containsKey(key)
|
||||
|
||||
public fun <K> Map<K, *>.containsValueRaw(value: Any?): Boolean = (this as Map<K, Any?>).containsValue(value)
|
||||
|
||||
@Deprecated("Use property 'value' instead", ReplaceWith("this.value"))
|
||||
@Deprecated("Use property 'value' instead.", ReplaceWith("value"))
|
||||
public fun <K, V> Map.Entry<K, V>.getValue(): V = value
|
||||
|
||||
@Deprecated("Use 'removeAt' instead", ReplaceWith("this.removeAt(index)"))
|
||||
@Deprecated("Use 'removeAt' instead.", ReplaceWith("removeAt(index)"))
|
||||
public fun <E> MutableList<E>.remove(index: Int): E = removeAt(index)
|
||||
|
||||
@Deprecated("Use explicit cast to MutableCollection<Any?> instead.", ReplaceWith("this.removeRaw(o)"))
|
||||
@Deprecated("Use 'removeRaw' instead.", ReplaceWith("removeRaw(o)"))
|
||||
public fun <E> MutableCollection<E>.remove(o: Any?): Boolean = removeRaw(o)
|
||||
|
||||
@Deprecated("Use explicit cast to MutableCollection<Any?> instead", ReplaceWith("removeAllRaw(c)"))
|
||||
@Deprecated("Use 'removeAllRaw' instead.", ReplaceWith("removeAllRaw(c)"))
|
||||
public fun <E> MutableCollection<E>.removeAll(c: Collection<Any?>): Boolean = removeAllRaw(c)
|
||||
|
||||
@Deprecated("Use explicit cast to MutableCollection<Any?> instead", ReplaceWith("retainAllRaw(c)"))
|
||||
@Deprecated("Use 'retainAllRaw' instead.", ReplaceWith("retainAllRaw(c)"))
|
||||
public fun <E> MutableCollection<E>.retainAll(c: Collection<Any?>): Boolean = retainAllRaw(c)
|
||||
|
||||
@Deprecated("Use explicit cast to List<Any?> instead", ReplaceWith("indexOfRaw(o)"))
|
||||
@Deprecated("Use 'indexOfRaw' instead.", ReplaceWith("indexOfRaw(o)"))
|
||||
public fun <E> List<E>.indexOf(o: Any?): Int = indexOfRaw(o)
|
||||
|
||||
@Deprecated("Use explicit cast to List<Any?> instead", ReplaceWith("lastIndexOfRaw(o)"))
|
||||
@Deprecated("Use 'lastIndexOfRaw' instead.", ReplaceWith("lastIndexOfRaw(o)"))
|
||||
public fun <E> List<E>.lastIndexOf(o: Any?): Int = lastIndexOfRaw(o)
|
||||
|
||||
@Deprecated("Use property 'length' instead", ReplaceWith("this.length"))
|
||||
@Deprecated("Use property 'length' instead.", ReplaceWith("length"))
|
||||
public fun CharSequence.length(): Int = length
|
||||
|
||||
@Deprecated("Use explicit cast to Map<Any?, V> instead", ReplaceWith("getRaw(key)"))
|
||||
@Deprecated("Use 'getRaw' instead.", ReplaceWith("getRaw(key)"))
|
||||
public inline operator fun <K, V> Map<K, V>.get(key: Any?): V? = getRaw(key)
|
||||
|
||||
@Deprecated("Use explicit cast to Map<Any?, V> instead", ReplaceWith("containsKeyRaw(key)"))
|
||||
@Deprecated("Use 'containsKeyRaw' instead.", ReplaceWith("containsKeyRaw(key)"))
|
||||
public inline fun <K, V> Map<K, V>.containsKey(key: Any?): Boolean = containsKeyRaw(key)
|
||||
|
||||
@Deprecated("Use explicit cast to Map<K, Any?> instead", ReplaceWith("containsValueRaw(value)"))
|
||||
@Deprecated("Use 'containsValueRaw' instead.", ReplaceWith("containsValueRaw(value)"))
|
||||
public inline fun <K, V> Map<K, V>.containsValue(value: Any?): Boolean = containsValueRaw(value)
|
||||
|
||||
@Deprecated("Use property 'keys' instead", ReplaceWith("this.keys"))
|
||||
@Deprecated("Use property 'keys' instead.", ReplaceWith("keys"))
|
||||
public inline fun <K, V> Map<K, V>.keySet(): Set<K> = keys
|
||||
|
||||
@kotlin.jvm.JvmName("mutableKeys")
|
||||
@Deprecated("Use property 'keys' instead", ReplaceWith("this.keys"))
|
||||
@Deprecated("Use property 'keys' instead.", ReplaceWith("keys"))
|
||||
public fun <K, V> MutableMap<K, V>.keySet(): MutableSet<K> = keys
|
||||
|
||||
@Deprecated("Use property 'entries' instead", ReplaceWith("this.entries"))
|
||||
@Deprecated("Use property 'entries' instead.", ReplaceWith("entries"))
|
||||
public inline fun <K, V> Map<K, V>.entrySet(): Set<Map.Entry<K, V>> = entries
|
||||
|
||||
@kotlin.jvm.JvmName("mutableEntrySet")
|
||||
@Deprecated("Use property 'entries' instead", ReplaceWith("this.entries"))
|
||||
@Deprecated("Use property 'entries' instead.", ReplaceWith("entries"))
|
||||
public fun <K, V> MutableMap<K, V>.entrySet(): MutableSet<MutableMap.MutableEntry<K, V>> = entries
|
||||
|
||||
@Deprecated("Use property 'values' instead", ReplaceWith("this.values"))
|
||||
@Deprecated("Use property 'values' instead.", ReplaceWith("values"))
|
||||
public inline fun <K, V> Map<K, V>.values(): Collection<V> = values
|
||||
|
||||
@kotlin.jvm.JvmName("mutableValues")
|
||||
@Deprecated("Use property 'values' instead", ReplaceWith("this.values"))
|
||||
@Deprecated("Use property 'values' instead.", ReplaceWith("values"))
|
||||
public fun <K, V> MutableMap<K, V>.values(): MutableCollection<V> = values
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user