Если вы напишите
val fallback: () -> Unit = { -> false }
, вы увидите, что он также компилируется (он просто отбрасывает результат).Так что { -> false}
может использоваться для обоих типов () -> Boolean
и () -> Unit
, и компилятор не знает, какой вы хотите.
Таким образом, чтобы использовать лямбду, укажите там нужный тип:
.withFallback({ -> false} as () -> Boolean)
или создайте функцию расширения без перегрузки, например:
fun <T, F> FailsafeConfig<T, F>.withFallbackT(fallback: () -> T) = withFallback(fallback)
return Failsafe.with<Boolean>(retryPolicy)
.withFallbackT { -> false}...