[history] Error in crossreturn check was replaced with lambda, shorten versions of function
This commit is contained in:
parent
fc4bd9eb89
commit
586e825693
@ -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()
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user