From ac858f760ad5afe9d6f961c2cbc5177dfdfc2d2b Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Thu, 10 Sep 2020 00:06:26 +0300 Subject: [PATCH] Forbid vararg flattening in place there array was expected --- .../src/org/jetbrains/kotlin/ir/interpreter/IrInterpreter.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrInterpreter.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrInterpreter.kt index 34eb87e3e08..e149be93cc2 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrInterpreter.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/IrInterpreter.kt @@ -750,7 +750,10 @@ class IrInterpreter(private val irBuiltIns: IrBuiltIns, private val bodyMap: Map it.interpret().check { executionResult -> return executionResult } return@flatMap when (val result = stack.popReturnValue()) { is Wrapper -> listOf(result.value) - is Primitive<*> -> arrayToList(result.value) + is Primitive<*> -> when { + expression.varargElementType.isArray() -> listOf(result.value) + else -> arrayToList(result.value) + } is Common -> when { result.irClass.defaultType.isUnsignedArray() -> arrayToList((result.fields.single().state as Primitive<*>).value) else -> listOf(result.asProxy(this, elementIrClass?.owner))