From 586e82569387b4cf448caa5fec78e15cd046f9c0 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Tue, 18 Mar 2025 19:36:25 +0300 Subject: [PATCH] [history] Error in crossreturn check was replaced with lambda, shorten versions of function --- .../highlevel_try_finally/safe_autoclose.kt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/utility/highlevel_try_finally/safe_autoclose.kt b/src/commonMain/kotlin/ru/landgrafhomyak/utility/highlevel_try_finally/safe_autoclose.kt index 6d6ed32..0d14a03 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/utility/highlevel_try_finally/safe_autoclose.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/utility/highlevel_try_finally/safe_autoclose.kt @@ -1,9 +1,21 @@ package ru.landgrafhomyak.utility.highlevel_try_finally -fun safeAutoClose( +inline fun safeAutoClose( + finally: () -> Unit, + action: () -> R +): R = safeAutoClose(onError = finally, onSuccess = finally, onCrossReturn = finally, action = action) + +inline fun safeAutoClose( onError: () -> Unit = {}, onSuccess: () -> Unit = {}, action: () -> R +): R = safeAutoClose(onError = onError, onSuccess = onSuccess, onCrossReturn = onSuccess, action = action) + +inline fun safeAutoClose( + onError: () -> Unit = {}, + onSuccess: () -> Unit = {}, + onCrossReturn: () -> Unit = {}, + action: () -> R ): R { val ret: R var wasError = false @@ -22,7 +34,7 @@ fun safeAutoClose( } finally { if (!wasError) { if (crossReturned) - throw Error("crossreturn") + onCrossReturn() onSuccess() } }