Spread should always copy arrays.

Introduce a special (package private) utility class ArraysUtilJVM
to fix Array<T>.asList() issues.
This commit is contained in:
Dmitry Petrov
2015-10-05 19:04:46 +03:00
parent 97946feb9a
commit 57869d85e8
7 changed files with 77 additions and 5 deletions
@@ -0,0 +1,27 @@
import kotlin.test.*
fun <T> copyArray(vararg data: T): Array<out T> = data
inline fun <reified T> reifiedCopyArray(vararg data: T): Array<out T> = data
fun copyIntArray(vararg data: Int): IntArray = data
fun box(): String {
val sarr = arrayOf("OK")
val sarr2 = copyArray(*sarr)
sarr[0] = "Array was not copied"
assertEquals(sarr2[0], "OK", "Failed: Array<String>")
var rsarr = arrayOf("OK")
var rsarr2 = reifiedCopyArray(*rsarr)
rsarr[0] = "Array was not copied"
assertEquals(rsarr2[0], "OK", "Failed: Array<String>, reified copy")
val iarr = IntArray(1)
iarr[0] = 1
val iarr2 = copyIntArray(*iarr)
iarr[0] = 42
assertEquals(iarr2[0], 1, "Failed: IntArray")
return "OK"
}