// FIR_IDENTICAL // !LANGUAGE: +SuspendConversion fun useSuspend(fn: suspend () -> Unit) {} fun useSuspendNullable(fn: (suspend () -> Unit)?) {} fun useSuspendNestedNullable(fn: ((suspend () -> Unit)?)?) {} fun useSuspendInt(fn: suspend (Int) -> Unit) {} suspend fun foo0() {} fun foo1() {} fun fooInt(x: Int) {} fun foo2(vararg xs: Int) {} fun foo3(): Int = 42 fun foo4(i: Int = 42) {} class C { fun bar() {} } fun testLambda() { useSuspend { foo1() } } fun testNoCoversion() { useSuspend(::foo0) } fun testSuspendPlain() { useSuspend(::foo1) } fun testSuspendWithArgs() { useSuspendInt(::fooInt) } fun testWithVararg() { useSuspend(::foo2) } fun testWithVarargMapped() { useSuspendInt(::foo2) } fun testWithCoercionToUnit() { useSuspend(::foo3) } fun testWithDefaults() { useSuspend(::foo4) } fun testWithBoundReceiver() { useSuspend(C()::bar) } fun testNullableParam() { useSuspendNullable(::foo1) } fun testNestedNullableParam() { useSuspendNestedNullable(::foo1) }