From b55b67ebe6b37657999eabfe5199445432f0d5e7 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Thu, 1 Dec 2016 13:43:54 +0700 Subject: [PATCH] backend: improve absent `finally` handling --- .../jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt index 16b702218ab..72a878121d3 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt @@ -941,7 +941,13 @@ internal class CodeGeneratorVisitor(val context: Context) : IrElementVisitorVoid private fun genFinalizedBy(finalize: IrExpression?, type: KotlinType, code: (ContinuationBlock) -> Unit): LLVMValueRef? { - return genFinalizedBy({ evaluateExpression("", finalize) }, type, code) + val finalizeFun: (() -> Unit)? = if (finalize == null) { + null + } else { + { evaluateExpression("", finalize) } + } + + return genFinalizedBy(finalizeFun, type, code) } private fun KotlinType.isUnitOrNothing() = isUnit() || isNothing()