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 ebe7c9e559f..f365c607582 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,20 +21,16 @@ import org.jetbrains.kotlin.fir.typeContext import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor import org.jetbrains.kotlin.ir.IrElement +import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns 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.types.makeNotNull -import org.jetbrains.kotlin.ir.types.removeAnnotations -import org.jetbrains.kotlin.ir.types.withHasQuestionMark +import org.jetbrains.kotlin.ir.types.* import org.jetbrains.kotlin.ir.util.classId -import org.jetbrains.kotlin.ir.util.coerceToUnitIfNeeded import org.jetbrains.kotlin.ir.util.parentAsClass import org.jetbrains.kotlin.types.AbstractTypeChecker class Fir2IrImplicitCastInserter( - private val components: Fir2IrComponents, - private val visitor: Fir2IrVisitor + private val components: Fir2IrComponents ) : Fir2IrComponents by components, FirDefaultVisitor() { private fun FirTypeRef.toIrType(): IrType = with(typeConverter) { toIrType() } @@ -333,4 +329,17 @@ class Fir2IrImplicitCastInserter( original ) } + + private fun IrExpression.coerceToUnitIfNeeded(valueType: IrType, irBuiltIns: IrBuiltIns): IrExpression { + return if (valueType.isUnit() || valueType.isNothing()) + this + else + IrTypeOperatorCallImpl( + startOffset, endOffset, + irBuiltIns.unitType, + IrTypeOperator.IMPLICIT_COERCION_TO_UNIT, + irBuiltIns.unitType, + this + ) + } } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt index bab43f871ea..4266f40494d 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt @@ -52,7 +52,7 @@ class Fir2IrVisitor( private val conversionScope: Fir2IrConversionScope ) : Fir2IrComponents by components, FirDefaultVisitor(), IrGeneratorContextInterface { - internal val implicitCastInserter = Fir2IrImplicitCastInserter(components, this) + internal val implicitCastInserter = Fir2IrImplicitCastInserter(components) private val memberGenerator = ClassMemberGenerator(components, this, conversionScope)