// !LANGUAGE: +SuspendConversion // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION class Inv2 fun foo1(f: suspend (T) -> String): T = TODO() fun foo2(f: suspend () -> T): T = TODO() fun foo3(f: suspend (T) -> K): Inv2 = TODO() fun id(e: I): I = e fun test(f: (Int) -> String, g: () -> String) { val a0 = foo1(f) a0 val a1 = foo2(g) a1 val a2 = foo3(f) ")!>a2 val a3 = foo1(id(f)) a3 val a4 = foo2(id(g)) a4 val a5 = foo3(id(f)) ")!>a5 }