[history] Error in crossreturn check was replaced with lambda, shorten versions of function

This commit is contained in:
Andrew Golovashevich 2025-03-18 19:36:25 +03:00
parent fc4bd9eb89
commit 586e825693

View File

@ -1,9 +1,21 @@
package ru.landgrafhomyak.utility.highlevel_try_finally
fun <R> safeAutoClose(
inline fun <R> safeAutoClose(
finally: () -> Unit,
action: () -> R
): R = safeAutoClose(onError = finally, onSuccess = finally, onCrossReturn = finally, action = action)
inline fun <R> safeAutoClose(
onError: () -> Unit = {},
onSuccess: () -> Unit = {},
action: () -> R
): R = safeAutoClose(onError = onError, onSuccess = onSuccess, onCrossReturn = onSuccess, action = action)
inline fun <R> safeAutoClose(
onError: () -> Unit = {},
onSuccess: () -> Unit = {},
onCrossReturn: () -> Unit = {},
action: () -> R
): R {
val ret: R
var wasError = false
@ -22,7 +34,7 @@ fun <R> safeAutoClose(
} finally {
if (!wasError) {
if (crossReturned)
throw Error("crossreturn")
onCrossReturn()
onSuccess()
}
}