From 6bd27e52bc273c723e6d344e27af0858f8752c7c Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Wed, 5 Oct 2016 16:31:54 +0300 Subject: [PATCH] Don't wrap return and error expressions into returns --- .../jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt index b6c7a741f08..9a4e58b7203 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/BodyGenerator.kt @@ -105,7 +105,12 @@ class BodyGenerator(val scopeOwner: DeclarationDescriptor, override val context: } } - private fun IrExpression.wrapWithReturn() = generateReturnExpression(startOffset, endOffset, this) + private fun IrExpression.wrapWithReturn() = + if (this is IrReturn || this is IrErrorExpression || this is IrThrow) + this + else { + generateReturnExpression(startOffset, endOffset, this) } + private fun generateReturnExpression(startOffset: Int, endOffset: Int, returnValue: IrExpression): IrReturnImpl { val returnTarget = (scopeOwner as? CallableDescriptor) ?: