JVM IR: Fix spread operator on unsigned array type

This commit is contained in:
Steven Schäfer
2019-09-20 13:30:26 +02:00
committed by Alexander Udalov
parent 1a50a3cbb1
commit f40f9611c3
2 changed files with 2 additions and 3 deletions
@@ -106,7 +106,7 @@ class IrArrayBuilder(val builder: JvmIrBuilder, val arrayType: IrType) {
fun getSize() = irCall(size).apply { dispatchReceiver = irGet(spreadVar) }
val result = irTemporary(newArray(getSize()))
+irCall(builder.irSymbols.systemArraycopy).apply {
putValueArgument(0, irGet(spreadVar))
putValueArgument(0, coerce(irGet(spreadVar), unwrappedArrayType))
putValueArgument(1, irInt(0))
putValueArgument(2, irGet(result))
putValueArgument(3, irInt(0))
@@ -135,7 +135,7 @@ class IrArrayBuilder(val builder: JvmIrBuilder, val arrayType: IrType) {
for (element in elements) {
+irCall(if (element.isSpread) addSpread else addElement).apply {
dispatchReceiver = irGet(spreadBuilderVar)
putValueArgument(0, if (element.isSpread) element.expression else coerce(element.expression, elementType))
putValueArgument(0, coerce(element.expression, if (element.isSpread) unwrappedArrayType else elementType))
}
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// WITH_RUNTIME
// KJS_WITH_FULL_RUNTIME