From a8fef3a3852fd560ac28c4e65c277d39a72274eb Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Fri, 9 Jun 2017 01:29:29 +0300 Subject: [PATCH] Provide MutableList.fill for JS, annotate new API with @SinceKotlin #KT-8823 #KT-9010 --- js/js.libraries/src/core/collections.kt | 12 ++++++++++++ libraries/stdlib/common/src/kotlin/CollectionsH.kt | 2 ++ .../src/kotlin/collections/MutableCollections.kt | 5 +++++ .../test/collections/MutableCollectionsTest.kt | 1 - 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/js/js.libraries/src/core/collections.kt b/js/js.libraries/src/core/collections.kt index 927f78ec018..f7d566870e0 100644 --- a/js/js.libraries/src/core/collections.kt +++ b/js/js.libraries/src/core/collections.kt @@ -79,6 +79,18 @@ public fun setOf(element: T): Set = hashSetOf(element) */ public fun mapOf(pair: Pair): Map = hashMapOf(pair) +/** + * Fills the list with the provided [value]. + * + * Each element in the list gets replaced with the [value]. + */ +@SinceKotlin("1.2") +public fun MutableList.fill(value: T) { + for (index in 0..lastIndex) { + this[index] = value + } +} + /** * Sorts elements in the list in-place according to their natural sort order. */ diff --git a/libraries/stdlib/common/src/kotlin/CollectionsH.kt b/libraries/stdlib/common/src/kotlin/CollectionsH.kt index dad4d73da23..ed347c6975c 100644 --- a/libraries/stdlib/common/src/kotlin/CollectionsH.kt +++ b/libraries/stdlib/common/src/kotlin/CollectionsH.kt @@ -149,6 +149,8 @@ expect inline fun Array?.orEmpty(): Array expect inline fun Collection.toTypedArray(): Array +@SinceKotlin("1.2") +expect fun MutableList.fill(value: T): Unit expect fun > MutableList.sort(): Unit expect fun MutableList.sortWith(comparator: Comparator): Unit diff --git a/libraries/stdlib/src/kotlin/collections/MutableCollections.kt b/libraries/stdlib/src/kotlin/collections/MutableCollections.kt index c0e86f2c5f7..e0a7f9f1986 100644 --- a/libraries/stdlib/src/kotlin/collections/MutableCollections.kt +++ b/libraries/stdlib/src/kotlin/collections/MutableCollections.kt @@ -291,6 +291,7 @@ public fun MutableList.sortWith(comparator: Comparator): Unit { */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly +@SinceKotlin("1.2") public inline fun MutableList.fill(value: T) { java.util.Collections.fill(this, value) } @@ -301,6 +302,7 @@ public inline fun MutableList.fill(value: T) { */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly +@SinceKotlin("1.2") public inline fun MutableList.shuffle() { java.util.Collections.shuffle(this) } @@ -310,6 +312,7 @@ public inline fun MutableList.shuffle() { */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly +@SinceKotlin("1.2") public inline fun MutableList.shuffle(random: java.util.Random) { java.util.Collections.shuffle(this, random) } @@ -318,6 +321,7 @@ public inline fun MutableList.shuffle(random: java.util.Random) { * Returns a new list with the elements of this list randomly shuffled. */ @kotlin.jvm.JvmVersion +@SinceKotlin("1.2") public fun Iterable.shuffled(): List = toMutableList().apply { shuffle() } /** @@ -325,4 +329,5 @@ public fun Iterable.shuffled(): List = toMutableList().apply { shuffle * using the specified [random] instance as the source of randomness. */ @kotlin.jvm.JvmVersion +@SinceKotlin("1.2") public fun Iterable.shuffled(random: java.util.Random): List = toMutableList().apply { shuffle(random) } diff --git a/libraries/stdlib/test/collections/MutableCollectionsTest.kt b/libraries/stdlib/test/collections/MutableCollectionsTest.kt index add66797065..e60a8a5d7ac 100644 --- a/libraries/stdlib/test/collections/MutableCollectionsTest.kt +++ b/libraries/stdlib/test/collections/MutableCollectionsTest.kt @@ -95,7 +95,6 @@ class MutableCollectionTest { } } - @JvmVersion @Test fun listFill() { val list = MutableList(3) { it } list.fill(42)