From e24af934dce75fe76c3cade56b09885737bb95f2 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Fri, 16 Oct 2015 19:16:29 +0300 Subject: [PATCH] Use the same implementation in Array.toArrayList as in arrayListOf. --- libraries/stdlib/src/generated/_Arrays.kt | 2 +- libraries/stdlib/src/kotlin/collections/JUtil.kt | 2 ++ libraries/tools/kotlin-stdlib-gen/src/templates/Snapshots.kt | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/stdlib/src/generated/_Arrays.kt b/libraries/stdlib/src/generated/_Arrays.kt index 02c49710f83..275c8323fba 100644 --- a/libraries/stdlib/src/generated/_Arrays.kt +++ b/libraries/stdlib/src/generated/_Arrays.kt @@ -5160,7 +5160,7 @@ public fun Array.toShortArray(): ShortArray { * Returns an [ArrayList] of all elements. */ public fun Array.toArrayList(): ArrayList { - return this.asList().toArrayList() + return ArrayList(this.asCollection()) } /** diff --git a/libraries/stdlib/src/kotlin/collections/JUtil.kt b/libraries/stdlib/src/kotlin/collections/JUtil.kt index 95187ecf927..947a1aff135 100644 --- a/libraries/stdlib/src/kotlin/collections/JUtil.kt +++ b/libraries/stdlib/src/kotlin/collections/JUtil.kt @@ -44,6 +44,8 @@ internal object EmptyList : List, Serializable { private fun readResolve(): Any = EmptyList } +internal fun Array.asCollection(): Collection = ArrayAsCollection(this) + private class ArrayAsCollection(val values: Array): Collection { override val size: Int get() = values.size() override fun isEmpty(): Boolean = values.isEmpty() diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Snapshots.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Snapshots.kt index b0622a3148f..cae97629367 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Snapshots.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Snapshots.kt @@ -57,7 +57,7 @@ fun snapshots(): List { } body(Collections) { "return ArrayList(this)" } body(Strings) { "return toCollection(ArrayList(length()))" } - body(ArraysOfObjects) { "return this.asList().toArrayList()" } + body(ArraysOfObjects) { "return ArrayList(this.asCollection())" } body(ArraysOfPrimitives) { """ val list = ArrayList(size())