[KT-10614] Fix issue: copy array on vararg call with spread operator

This commit is contained in:
Alexey Andreev
2016-02-15 19:17:44 +03:00
parent 1bbc46729c
commit 79b42d7fe5
2 changed files with 6 additions and 0 deletions
@@ -237,6 +237,9 @@ class CallArgumentTranslator private constructor(
val concatExpression = concatArgumentsIfNeeded(concatArguments)
result.add(concatExpression)
}
else if (result.size == 1) {
result[0] = JsAstUtils.invokeMethod(result[0], "slice")
}
return resultKind
}
@@ -103,5 +103,8 @@ fun box(): String {
assertEquals(3, idArrayVarArg(arrayOf(1, 2), *arrayOf(arrayOf(3, 4), arrayOf(5, 6))).size)
assertEquals(6, idArrayVarArg(arrayOf(1, 2), *arrayOf(arrayOf(3, 4), arrayOf(5, 6)), arrayOf(7), *arrayOf(arrayOf(8, 9), arrayOf(10, 11))).size)
val c = arrayOf(*a)
assertFalse(a === c, "Spread operator should copy its argument")
return "OK"
}