diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt index 232225a20bc..bc25c2cb0ea 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt @@ -233,7 +233,7 @@ class InsertImplicitCasts(context: GeneratorContext) : IrElementTransformerVoid( } private fun IrExpression.coerceToUnit(): IrExpression { - val valueType = this.type.originalKotlinType!! + val valueType = getKotlinType(this) return if (KotlinTypeChecker.DEFAULT.isSubtypeOf(valueType, builtIns.unitType)) this @@ -247,6 +247,11 @@ class InsertImplicitCasts(context: GeneratorContext) : IrElementTransformerVoid( ) } + private fun getKotlinType(irExpression: IrExpression) = + if (irExpression is IrCall) + irExpression.symbol.descriptor.original.returnType!! + else irExpression.type.originalKotlinType!! + private fun KotlinType.isBuiltInIntegerType(): Boolean = KotlinBuiltIns.isByte(this) || KotlinBuiltIns.isShort(this) ||