diff --git a/compiler/testData/codegen/box/classes/overloadUnaryOperator.kt b/compiler/testData/codegen/box/classes/overloadUnaryOperator.kt index 1ff10d69216..cf0940b3ecf 100644 --- a/compiler/testData/codegen/box/classes/overloadUnaryOperator.kt +++ b/compiler/testData/codegen/box/classes/overloadUnaryOperator.kt @@ -1,3 +1,5 @@ +// WITH_RUNTIME + import java.util.* class ArrayWrapper() { @@ -10,7 +12,7 @@ class ArrayWrapper() { operator fun unaryMinus(): ArrayWrapper { val result = ArrayWrapper() result.contents.addAll(contents) - Collections.reverse(result.contents) + result.contents.reverse() return result } diff --git a/js/js.libraries/src/core/collections.kt b/js/js.libraries/src/core/collections.kt index 83f52d80bd7..192be3e0c91 100644 --- a/js/js.libraries/src/core/collections.kt +++ b/js/js.libraries/src/core/collections.kt @@ -61,3 +61,17 @@ public fun MutableList.sortWith(comparator: Comparator): Unit { @library("collectionsSort") private fun collectionsSort(list: MutableList, comparator: Comparator): Unit = noImpl + + +/** + * Reverses elements in the list in-place. + */ +public fun MutableList.reverse(): Unit { + val size = this.size + for (i in 0..(size / 2) - 1) { + val i2 = size - i - 1 + val tmp = this[i] + this[i] = this[i2] + this[i2] = tmp + } +} diff --git a/js/js.libraries/src/core/javautilCollections.kt b/js/js.libraries/src/core/javautilCollections.kt deleted file mode 100644 index d86414f30a4..00000000000 --- a/js/js.libraries/src/core/javautilCollections.kt +++ /dev/null @@ -1,14 +0,0 @@ -package java.util - -public object Collections { - @Deprecated("Use list.reverse() instead.", ReplaceWith("list.reverse()")) - public fun reverse(list: MutableList): Unit { - val size = list.size - for (i in 0..(size / 2) - 1) { - val i2 = size - i - 1 - val tmp = list[i] - list[i] = list[i2] - list[i2] = tmp - } - } -} diff --git a/libraries/stdlib/src/generated/_Collections.kt b/libraries/stdlib/src/generated/_Collections.kt index 2b4b03f0bd5..25d4cc64675 100644 --- a/libraries/stdlib/src/generated/_Collections.kt +++ b/libraries/stdlib/src/generated/_Collections.kt @@ -784,6 +784,7 @@ public inline fun Iterable.takeWhile(predicate: (T) -> Boolean): List /** * Reverses elements in the list in-place. */ +@kotlin.jvm.JvmVersion public fun MutableList.reverse(): Unit { java.util.Collections.reverse(this) } diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Ordering.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Ordering.kt index 176872cf257..3beea308b29 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Ordering.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Ordering.kt @@ -8,6 +8,7 @@ fun ordering(): List { templates add f("reverse()") { doc { f -> "Reverses ${f.element.pluralize()} in the ${f.collection} in-place." } only(Lists, InvariantArraysOfObjects, ArraysOfPrimitives) + jvmOnly(Lists) { true } customReceiver(Lists) { "MutableList" } returns { "Unit" } body { f ->