From a80f65cfd99be1722c3f717154eeff8e88caadc7 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Tue, 16 Jun 2015 16:41:46 +0300 Subject: [PATCH] =?UTF-8?q?Do=20not=20create=20empty=20list=20when=20rever?= =?UTF-8?q?sing=20empty=20collection=20or=20array=20=E2=80=94=20use=20sing?= =?UTF-8?q?leton=20empty=20list=20instead.=20#KT-8099=20Fixed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/stdlib/src/generated/_Ordering.kt | 20 +++++++++++++++++++ .../src/templates/Ordering.kt | 10 ++++++++++ 2 files changed, 30 insertions(+) diff --git a/libraries/stdlib/src/generated/_Ordering.kt b/libraries/stdlib/src/generated/_Ordering.kt index 1c06521a4ca..e8749f9259a 100644 --- a/libraries/stdlib/src/generated/_Ordering.kt +++ b/libraries/stdlib/src/generated/_Ordering.kt @@ -14,6 +14,8 @@ import java.util.Collections // TODO: it's temporary while we have java.util.Col * Returns a list with elements in reversed order. */ public fun Array.reverse(): List { + if (isEmpty()) + return emptyList() val list = toArrayList() Collections.reverse(list) return list @@ -23,6 +25,8 @@ public fun Array.reverse(): List { * Returns a list with elements in reversed order. */ public fun BooleanArray.reverse(): List { + if (isEmpty()) + return emptyList() val list = toArrayList() Collections.reverse(list) return list @@ -32,6 +36,8 @@ public fun BooleanArray.reverse(): List { * Returns a list with elements in reversed order. */ public fun ByteArray.reverse(): List { + if (isEmpty()) + return emptyList() val list = toArrayList() Collections.reverse(list) return list @@ -41,6 +47,8 @@ public fun ByteArray.reverse(): List { * Returns a list with elements in reversed order. */ public fun CharArray.reverse(): List { + if (isEmpty()) + return emptyList() val list = toArrayList() Collections.reverse(list) return list @@ -50,6 +58,8 @@ public fun CharArray.reverse(): List { * Returns a list with elements in reversed order. */ public fun DoubleArray.reverse(): List { + if (isEmpty()) + return emptyList() val list = toArrayList() Collections.reverse(list) return list @@ -59,6 +69,8 @@ public fun DoubleArray.reverse(): List { * Returns a list with elements in reversed order. */ public fun FloatArray.reverse(): List { + if (isEmpty()) + return emptyList() val list = toArrayList() Collections.reverse(list) return list @@ -68,6 +80,8 @@ public fun FloatArray.reverse(): List { * Returns a list with elements in reversed order. */ public fun IntArray.reverse(): List { + if (isEmpty()) + return emptyList() val list = toArrayList() Collections.reverse(list) return list @@ -77,6 +91,8 @@ public fun IntArray.reverse(): List { * Returns a list with elements in reversed order. */ public fun LongArray.reverse(): List { + if (isEmpty()) + return emptyList() val list = toArrayList() Collections.reverse(list) return list @@ -86,6 +102,8 @@ public fun LongArray.reverse(): List { * Returns a list with elements in reversed order. */ public fun ShortArray.reverse(): List { + if (isEmpty()) + return emptyList() val list = toArrayList() Collections.reverse(list) return list @@ -95,6 +113,8 @@ public fun ShortArray.reverse(): List { * Returns a list with elements in reversed order. */ public fun Iterable.reverse(): List { + if (this is Collection<*> && isEmpty()) + return emptyList() val list = toArrayList() Collections.reverse(list) return list diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Ordering.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Ordering.kt index 02206b18a89..c81826bfc14 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Ordering.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Ordering.kt @@ -10,6 +10,16 @@ fun ordering(): List { returns { "List" } body { """ + if (this is Collection<*> && isEmpty()) return emptyList() + val list = toArrayList() + Collections.reverse(list) + return list + """ + } + + body(ArraysOfObjects, ArraysOfPrimitives) { + """ + if (isEmpty()) return emptyList() val list = toArrayList() Collections.reverse(list) return list