From e747793e622df3b0fb78b2ddb445b6b749f17ebc Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 13 Nov 2023 08:56:24 +0100 Subject: [PATCH] FIR2IR: simplify applyAssigningArrayElementsToVarargInNamedForm a bit --- .../generators/CallAndReferenceGenerator.kt | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt index 88340c54c78..bae5e6a8515 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/CallAndReferenceGenerator.kt @@ -1065,20 +1065,14 @@ class CallAndReferenceGenerator( argument: FirExpression, parameter: FirValueParameter?, ): IrExpression { - if (this !is IrVarargImpl || - parameter?.isVararg != true || - argument !is FirVarargArgumentsExpression || - argument.arguments.none { it is FirNamedArgumentExpression } - ) { - return this - } - elements.forEachIndexed { i, irVarargElement -> - if (irVarargElement !is IrSpreadElement && - argument.arguments[i] is FirNamedArgumentExpression && + if (this is IrVararg && parameter?.isVararg == true && argument is FirVarargArgumentsExpression && elements.size == 1) { + val irVarargElement = elements[0] + if (argument.arguments[0] is FirNamedArgumentExpression && + // IrVarargElement can be either IrSpreadElement (then nothing to do) or IrExpression irVarargElement is IrExpression && (irVarargElement.type.isArray() || irVarargElement.type.isPrimitiveArray()) ) { - elements[i] = IrSpreadElementImpl(irVarargElement.startOffset, irVarargElement.endOffset, irVarargElement) + elements[0] = IrSpreadElementImpl(irVarargElement.startOffset, irVarargElement.endOffset, irVarargElement) } } return this