Spread should always copy arrays.

This commit is contained in:
Dmitry Petrov
2015-10-05 18:04:46 +03:00
parent 9e546bda27
commit fbf2424838
4 changed files with 49 additions and 3 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"
}