Refactor
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DevirtualizationAnalysis.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DevirtualizationAnalysis.kt
index e6baaf2..1dca3ea 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DevirtualizationAnalysis.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/DevirtualizationAnalysis.kt
@@ -1334,17 +1334,17 @@
// makes temporary val, in case tempName is specified
fun <T : IrElement> IrStatementsBuilder<T>.irSplitCoercion(expression: IrExpression, tempName: String?, actualType: IrType) =
- if (!expression.isBoxOrUnboxCall())
- if (tempName != null)
- PossiblyCoercedValue.OverVariable(irTemporary(expression, tempName, actualType), null)
- else PossiblyCoercedValue.OverExpression(expression, null)
- else {
+ if (expression.isBoxOrUnboxCall()) {
val coercion = expression as IrCall
val argument = coercion.getValueArgument(0)!!
val symbol = coercion.symbol
if (tempName != null)
PossiblyCoercedValue.OverVariable(irTemporary(argument, tempName, symbol.owner.explicitParameters.single().type), symbol)
else PossiblyCoercedValue.OverExpression(argument, symbol)
+ } else {
+ if (tempName != null)
+ PossiblyCoercedValue.OverVariable(irTemporary(expression, tempName, actualType), null)
+ else PossiblyCoercedValue.OverExpression(expression, null)
}
fun getTypeConversion(actualType: DataFlowIR.FunctionParameter,