JS IR: materialize Unit in lambdas
^KT-52010 fixed
This commit is contained in:
committed by
Anton Bannykh
parent
bc3514feae
commit
281e381223
+6
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.symbols.*
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.types.classifierOrNull
|
||||
import org.jetbrains.kotlin.ir.types.isUnit
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||
@@ -185,6 +186,11 @@ class InteropCallableReferenceLowering(val context: JsIrBackendContext) : BodyLo
|
||||
// Fix parents of declarations inside body
|
||||
body.patchDeclarationParents(lambdaDeclaration)
|
||||
|
||||
if (invokeFun.returnType.isUnit()) {
|
||||
val unitValue = JsIrBuilder.buildGetObjectValue(context.irBuiltIns.unitType, context.irBuiltIns.unitClass)
|
||||
(body as IrBlockBody).statements.add(IrReturnImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, context.irBuiltIns.nothingType, lambdaDeclaration.symbol, unitValue))
|
||||
}
|
||||
|
||||
return body as IrBlockBody
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user