From 5f6d2c53624fd078008ae2c122267a7be6e043f1 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Sun, 25 Oct 2020 22:09:31 -0700 Subject: [PATCH] FIR2IR: utilize argument conversions --- .../generators/CallAndReferenceGenerator.kt | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 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 17fc9961843..5a4365d0c0f 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 @@ -450,13 +450,7 @@ class CallAndReferenceGenerator( } for ((index, argument) in call.arguments.withIndex()) { val valueParameter = valueParameters?.get(index) - val argumentExpression = - with(adapterGenerator) { - visitor.convertToIrExpression(argument) - .applySamConversionIfNeeded(argument, valueParameter) - .applySuspendConversionIfNeeded(argument, valueParameter) - .applyAssigningArrayElementsToVarargInNamedForm(argument, valueParameter) - } + val argumentExpression = convertArgument(argument, valueParameter) putValueArgument(index, argumentExpression) } } @@ -494,13 +488,7 @@ class CallAndReferenceGenerator( return IrBlockImpl(startOffset, endOffset, type, IrStatementOrigin.ARGUMENTS_REORDERING_FOR_CALL).apply { for ((argument, parameter) in argumentMapping) { val parameterIndex = valueParameters.indexOf(parameter) - val irArgument = - with(adapterGenerator) { - visitor.convertToIrExpression(argument) - .applySamConversionIfNeeded(argument, parameter) - .applySuspendConversionIfNeeded(argument, parameter) - .applyAssigningArrayElementsToVarargInNamedForm(argument, parameter) - } + val irArgument = convertArgument(argument, parameter) if (irArgument.hasNoSideEffects()) { putValueArgument(parameterIndex, irArgument) } else { @@ -515,13 +503,7 @@ class CallAndReferenceGenerator( } } else { for ((argument, parameter) in argumentMapping) { - val argumentExpression = - with(adapterGenerator) { - visitor.convertToIrExpression(argument, annotationMode) - .applySamConversionIfNeeded(argument, parameter) - .applySuspendConversionIfNeeded(argument, parameter) - .applyAssigningArrayElementsToVarargInNamedForm(argument, parameter) - } + val argumentExpression = convertArgument(argument, parameter, annotationMode) putValueArgument(valueParameters.indexOf(parameter), argumentExpression) } if (annotationMode) { @@ -559,6 +541,18 @@ class CallAndReferenceGenerator( return false } + private fun convertArgument( + argument: FirExpression, + parameter: FirValueParameter?, + annotationMode: Boolean = false + ): IrExpression = + with(adapterGenerator) { + visitor.convertToIrExpression(argument, annotationMode) + .applySamConversionIfNeeded(argument, parameter) + .applySuspendConversionIfNeeded(argument, parameter) + .applyAssigningArrayElementsToVarargInNamedForm(argument, parameter) + } + private fun IrExpression.applySamConversionIfNeeded( argument: FirExpression, parameter: FirValueParameter?,