Fix in handling of nested vararg parameters
This commit is contained in:
+2
-1
@@ -79,6 +79,7 @@ class VarargInjectionLowering internal constructor(val context: Context): Declar
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun visitVararg(expression: IrVararg): IrExpression {
|
override fun visitVararg(expression: IrVararg): IrExpression {
|
||||||
|
expression.transformChildrenVoid(transformer)
|
||||||
val hasSpreadElement = hasSpreadElement(expression)
|
val hasSpreadElement = hasSpreadElement(expression)
|
||||||
if (!hasSpreadElement && expression.elements.all { it is IrConst<*> && KotlinBuiltIns.isString(it.type) }) {
|
if (!hasSpreadElement && expression.elements.all { it is IrConst<*> && KotlinBuiltIns.isString(it.type) }) {
|
||||||
log("skipped vararg expression because it's string array literal")
|
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 vars = expression.elements.map {
|
||||||
val initVar = scope.createTemporaryVariable(
|
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)
|
"elem".synthesizedString, true)
|
||||||
block.statements.add(initVar)
|
block.statements.add(initVar)
|
||||||
it to initVar
|
it to initVar
|
||||||
|
|||||||
Reference in New Issue
Block a user