Add an implicit cast to Unit in returns from a constructor.
This commit is contained in:
committed by
Dmitry Petrov
parent
826f55ecb4
commit
59c5d8bdb8
+6
-1
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||
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.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.types.classifierOrFail
|
||||
import org.jetbrains.kotlin.ir.types.impl.originalKotlinType
|
||||
@@ -107,7 +108,11 @@ open class InsertImplicitCasts(
|
||||
|
||||
override fun visitReturn(expression: IrReturn): IrExpression =
|
||||
expression.transformPostfix {
|
||||
value = value.cast(expression.returnTarget.returnType)
|
||||
value = if (expression.returnTargetSymbol is IrConstructorSymbol) {
|
||||
value.coerceToUnit()
|
||||
} else {
|
||||
value.cast(expression.returnTarget.returnType)
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitSetVariable(expression: IrSetVariable): IrExpression =
|
||||
|
||||
Reference in New Issue
Block a user