Relax generic variance in Array.flatten
This commit is contained in:
@@ -30,7 +30,7 @@ public inline fun <reified T> Array<out T>?.orEmpty(): Array<out T> = this ?: ar
|
|||||||
/**
|
/**
|
||||||
* Returns a single list of all elements from all arrays in the given array.
|
* Returns a single list of all elements from all arrays in the given array.
|
||||||
*/
|
*/
|
||||||
public fun <T> Array<Array<out T>>.flatten(): List<T> {
|
public fun <T> Array<out Array<out T>>.flatten(): List<T> {
|
||||||
val result = ArrayList<T>(sumBy { it.size })
|
val result = ArrayList<T>(sumBy { it.size })
|
||||||
for (element in this) {
|
for (element in this) {
|
||||||
result.addAll(element)
|
result.addAll(element)
|
||||||
|
|||||||
@@ -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 } })
|
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<Array<Int>> = arrayOf(arrayOf(1, 2, 3), arrayOf(4, 5, 6))
|
||||||
|
val arr2: Array<out Array<Int>> = arr1
|
||||||
|
val arr3: Array<out Array<out Int>> = arr1
|
||||||
|
val arr4: Array<Array<out Int>> = arr1 as Array<Array<out Int>>
|
||||||
|
|
||||||
|
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() {
|
@test fun asListPrimitives() {
|
||||||
// Array of primitives
|
// Array of primitives
|
||||||
val arr = intArrayOf(1, 2, 3, 4, 2, 5)
|
val arr = intArrayOf(1, 2, 3, 4, 2, 5)
|
||||||
|
|||||||
Reference in New Issue
Block a user