diff --git a/libraries/stdlib/src/kotlin/collections/Arrays.kt b/libraries/stdlib/src/kotlin/collections/Arrays.kt index b90a42453d1..5abe69dbce9 100644 --- a/libraries/stdlib/src/kotlin/collections/Arrays.kt +++ b/libraries/stdlib/src/kotlin/collections/Arrays.kt @@ -30,7 +30,7 @@ public inline fun Array?.orEmpty(): Array = this ?: ar /** * Returns a single list of all elements from all arrays in the given array. */ -public fun Array>.flatten(): List { +public fun Array>.flatten(): List { val result = ArrayList(sumBy { it.size }) for (element in this) { result.addAll(element) diff --git a/libraries/stdlib/test/collections/ArraysTest.kt b/libraries/stdlib/test/collections/ArraysTest.kt index bebc641042a..231d4c8b357 100644 --- a/libraries/stdlib/test/collections/ArraysTest.kt +++ b/libraries/stdlib/test/collections/ArraysTest.kt @@ -956,6 +956,19 @@ class ArraysTest { assertEquals(listOf(2), arrayOf("a", null, "test").mapIndexedNotNull { index, it -> it?.run { if (index != 0) length / index else null } }) } + @test fun flattenArray() { + val arr1: Array> = arrayOf(arrayOf(1, 2, 3), arrayOf(4, 5, 6)) + val arr2: Array> = arr1 + val arr3: Array> = arr1 + val arr4: Array> = arr1 as Array> + + val expected = listOf(1, 2, 3, 4, 5, 6) + assertEquals(expected, arr1.flatten()) + assertEquals(expected, arr2.flatten()) + assertEquals(expected, arr3.flatten()) + assertEquals(expected, arr4.flatten()) + } + @test fun asListPrimitives() { // Array of primitives val arr = intArrayOf(1, 2, 3, 4, 2, 5)