From 80108444ec3704f8de7924899cffa14efa1b9de5 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 28 Oct 2020 13:33:06 +0300 Subject: [PATCH] FIR2IR: cleanup implicit cast inserter --- .../kotlin/fir/backend/Fir2IrImplicitCastInserter.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt index 165f0162606..97db85112bf 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrImplicitCastInserter.kt @@ -21,7 +21,6 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.IrTypeOperatorCallImpl import org.jetbrains.kotlin.ir.types.IrType -import org.jetbrains.kotlin.ir.util.coerceToUnit import org.jetbrains.kotlin.ir.util.coerceToUnitIfNeeded import org.jetbrains.kotlin.name.Name @@ -91,7 +90,7 @@ class Fir2IrImplicitCastInserter( // ================================================================================== override fun visitExpression(expression: FirExpression, data: IrElement): IrElement { - return when(expression) { + return when (expression) { is FirBlock -> (data as IrContainerExpression).insertImplicitCasts() is FirUnitExpression -> (data as IrExpression).let { it.coerceToUnitIfNeeded(it.type, irBuiltIns) } else -> data @@ -120,7 +119,7 @@ class Fir2IrImplicitCastInserter( } val firBranchMap = irWhen.branches.zip(whenExpression.branches).toMap() irWhen.branches.replaceAll { - visitWhenBranch(firBranchMap[it]!!, it) + visitWhenBranch(firBranchMap.getValue(it), it) } return data } @@ -233,9 +232,8 @@ class Fir2IrImplicitCastInserter( if (irStatement !is IrErrorCallExpression && irStatement is IrExpression) { if (i != lastIndex) { statements[i] = irStatement.coerceToUnitIfNeeded(irStatement.type, irBuiltIns) - } else { - // TODO: for the last statement, need to cast to the return type if mismatched } + // TODO: for the last statement, need to cast to the return type if mismatched } }