K2: apply SAM if argument has postponed lambdas #KT-53966 Fixed

This commit is contained in:
Mikhail Glukhikh
2023-01-19 13:58:38 +01:00
committed by Space Team
parent 5a9e8b3c0a
commit 898a9a0f2c
12 changed files with 173 additions and 22 deletions
@@ -1,10 +1,42 @@
fun main() {
fun main(arg: Nothing?) {
val flag = true
consumeTicker(
if (flag) null else { num -> num.dec() }
)
consumeTicker(
select({ num -> num.dec() }, null)
)
consumeTicker(
try { { num -> num.dec() } } catch (e: Exception) { null }
)
consumeTicker(
<!DEBUG_INFO_CONSTANT!>arg<!> ?: { num -> num.dec() }
)
consumeTicker(
if (!flag) ::tick else null
)
consumeTicker(
select(::tick, null)
)
consumeTicker(
select(if (flag) null else ::tick, null)
)
consumeTicker(
// In fact ::tick is not used here
try { null } finally { ::tick }
)
consumeTicker(
try { null } catch (e: Exception) { null } catch (e: Throwable) { ::tick }
)
consumeTicker(
<!DEBUG_INFO_CONSTANT!>arg<!> ?: ::tick
)
}
fun tick(num: Int) {}
fun <T> select(a: T, b: T): T = a
fun consumeTicker(ticker: Ticker?) {
}