Add explicit irReturn when transforming expression body to block body.

This commit is contained in:
Mads Ager
2019-11-29 14:21:04 +01:00
committed by max-kammerer
parent 7fede87825
commit 8383274144
2 changed files with 3 additions and 2 deletions
@@ -315,7 +315,7 @@ private class BridgeLowering(val context: JvmBackendContext) : ClassLoweringPass
} }
// After the checks, insert the orignal method body. // After the checks, insert the orignal method body.
if (body is IrExpressionBody) { if (body is IrExpressionBody) {
+(body as IrExpressionBody).expression +irReturn((body as IrExpressionBody).expression)
} else { } else {
(body as IrBlockBody).statements.forEach { +it } (body as IrBlockBody).statements.forEach { +it }
} }
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator
import org.jetbrains.kotlin.ir.builders.createTmpVariable import org.jetbrains.kotlin.ir.builders.createTmpVariable
import org.jetbrains.kotlin.ir.builders.irBlockBody import org.jetbrains.kotlin.ir.builders.irBlockBody
import org.jetbrains.kotlin.ir.builders.irInt import org.jetbrains.kotlin.ir.builders.irInt
import org.jetbrains.kotlin.ir.builders.irReturn
import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrFile
@@ -78,7 +79,7 @@ internal class FakeInliningLocalVariablesLowering(val context: JvmBackendContext
// it will materialize in the code. // it will materialize in the code.
createTmpVariable(irInt(0), name, origin = IrDeclarationOrigin.DEFINED) createTmpVariable(irInt(0), name, origin = IrDeclarationOrigin.DEFINED)
if (body is IrExpressionBody) { if (body is IrExpressionBody) {
+(body as IrExpressionBody).expression +irReturn((body as IrExpressionBody).expression)
} else { } else {
(body as IrBlockBody).statements.forEach { +it } (body as IrBlockBody).statements.forEach { +it }
} }