From 83832741442d5c003e2cb01501fbecc0d749df30 Mon Sep 17 00:00:00 2001 From: Mads Ager Date: Fri, 29 Nov 2019 14:21:04 +0100 Subject: [PATCH] Add explicit irReturn when transforming expression body to block body. --- .../org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt | 2 +- .../backend/jvm/lower/FakeInliningLocalVariablesLowering.kt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt index 3e87c0a488f..d4441cb7398 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt @@ -315,7 +315,7 @@ private class BridgeLowering(val context: JvmBackendContext) : ClassLoweringPass } // After the checks, insert the orignal method body. if (body is IrExpressionBody) { - +(body as IrExpressionBody).expression + +irReturn((body as IrExpressionBody).expression) } else { (body as IrBlockBody).statements.forEach { +it } } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FakeInliningLocalVariablesLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FakeInliningLocalVariablesLowering.kt index 300046e8c4a..ff06f36a8f3 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FakeInliningLocalVariablesLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FakeInliningLocalVariablesLowering.kt @@ -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.irBlockBody 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.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrFile @@ -78,7 +79,7 @@ internal class FakeInliningLocalVariablesLowering(val context: JvmBackendContext // it will materialize in the code. createTmpVariable(irInt(0), name, origin = IrDeclarationOrigin.DEFINED) if (body is IrExpressionBody) { - +(body as IrExpressionBody).expression + +irReturn((body as IrExpressionBody).expression) } else { (body as IrBlockBody).statements.forEach { +it } }