From e890cb137fd2722bd802488892a7507610b170ec Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Wed, 7 Dec 2016 05:18:27 +0300 Subject: [PATCH] Unify MutableList.reverse function template between JVM and JS --- js/js.libraries/src/core/collections.kt | 12 ------------ .../src/core/generated/_CollectionsJs.kt | 15 +++++++++++++++ libraries/stdlib/src/generated/_Collections.kt | 1 - .../kotlin-stdlib-gen/src/templates/Ordering.kt | 5 ++--- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/js/js.libraries/src/core/collections.kt b/js/js.libraries/src/core/collections.kt index a6c3d61570b..5c9b8f328be 100644 --- a/js/js.libraries/src/core/collections.kt +++ b/js/js.libraries/src/core/collections.kt @@ -75,15 +75,3 @@ public fun MutableList.sortWith(comparator: Comparator): Unit { 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/generated/_CollectionsJs.kt b/js/js.libraries/src/core/generated/_CollectionsJs.kt index b7a1e2a52b1..e3aebdd3dcd 100644 --- a/js/js.libraries/src/core/generated/_CollectionsJs.kt +++ b/js/js.libraries/src/core/generated/_CollectionsJs.kt @@ -780,6 +780,21 @@ public inline fun Iterable.takeWhile(predicate: (T) -> Boolean): List return list } +/** + * Reverses elements in the list in-place. + */ +public fun MutableList.reverse(): Unit { + val midPoint = (size / 2) - 1 + if (midPoint < 0) return + var reverseIndex = lastIndex + for (index in 0..midPoint) { + val tmp = this[index] + this[index] = this[reverseIndex] + this[reverseIndex] = tmp + reverseIndex-- + } +} + /** * Returns a list with elements in reversed order. */ diff --git a/libraries/stdlib/src/generated/_Collections.kt b/libraries/stdlib/src/generated/_Collections.kt index 3bf930fb8ff..a76a514a322 100644 --- a/libraries/stdlib/src/generated/_Collections.kt +++ b/libraries/stdlib/src/generated/_Collections.kt @@ -784,7 +784,6 @@ 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 3beea308b29..5c9569f6847 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Ordering.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Ordering.kt @@ -8,10 +8,9 @@ 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 -> + body { """ val midPoint = (size / 2) - 1 if (midPoint < 0) return @@ -24,7 +23,7 @@ fun ordering(): List { } """ } - body(Lists) { """java.util.Collections.reverse(this)""" } + body(Platform.JVM, Lists) { """java.util.Collections.reverse(this)""" } } templates add f("reversed()") {