Ответ
В Kotlin return в inline-функции ведёт себя по-особому: он возвращает из внешней функции, а не только из лямбды. Это называется нелокальный возврат (non-local return).
inline fun doSomething(action: () -> Unit) {
action()
}
fun main() {
doSomething {
println("Before return")
return // Выход из main(), а не только из лямбды!
}
println("This won't be printed")
}
Если нужно вернуться только из лямбды, используйте return@label (локальный возврат).
doSomething {
println("Before return")
return@doSomething // Выход только из лямбды
}