From 3820ea0724d36902fea069ae9386a4c1723c439f Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Mon, 20 Mar 2017 17:38:00 +0300 Subject: [PATCH] Fix in handling of nested vararg parameters --- .../org/jetbrains/kotlin/backend/konan/lower/VarargLowering.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VarargLowering.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VarargLowering.kt index 0159ea12ea5..078450f98b7 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VarargLowering.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/lower/VarargLowering.kt @@ -79,6 +79,7 @@ class VarargInjectionLowering internal constructor(val context: Context): Declar } override fun visitVararg(expression: IrVararg): IrExpression { + expression.transformChildrenVoid(transformer) val hasSpreadElement = hasSpreadElement(expression) if (!hasSpreadElement && expression.elements.all { it is IrConst<*> && KotlinBuiltIns.isString(it.type) }) { log("skipped vararg expression because it's string array literal") @@ -98,7 +99,7 @@ class VarargInjectionLowering internal constructor(val context: Context): Declar val vars = expression.elements.map { val initVar = scope.createTemporaryVariable( - ((it as? IrSpreadElement)?.expression ?: it as IrExpression).apply { it.transformChildrenVoid(transformer) }, + (it as? IrSpreadElement)?.expression ?: it as IrExpression, "elem".synthesizedString, true) block.statements.add(initVar) it to initVar