[KT-10614] Fix issue: copy array on vararg call with spread operator
This commit is contained in:
+3
@@ -237,6 +237,9 @@ class CallArgumentTranslator private constructor(
|
|||||||
val concatExpression = concatArgumentsIfNeeded(concatArguments)
|
val concatExpression = concatArgumentsIfNeeded(concatArguments)
|
||||||
result.add(concatExpression)
|
result.add(concatExpression)
|
||||||
}
|
}
|
||||||
|
else if (result.size == 1) {
|
||||||
|
result[0] = JsAstUtils.invokeMethod(result[0], "slice")
|
||||||
|
}
|
||||||
|
|
||||||
return resultKind
|
return resultKind
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,5 +103,8 @@ fun box(): String {
|
|||||||
assertEquals(3, idArrayVarArg(arrayOf(1, 2), *arrayOf(arrayOf(3, 4), arrayOf(5, 6))).size)
|
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)
|
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"
|
return "OK"
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user