// LANGUAGE: +SuspendOnlySamConversions
// TARGET_BACKEND: JVM_IR

fun interface FI {
    suspend fun call() // suspending now(!!!)
}

fun accept(fi: FI): Int = 1

suspend fun foo() {}
fun foo2() {}

fun box(): String {
    val fi0: () -> Unit = {}
    accept(fi0)

    val fi: suspend () -> Unit = {} // Lambda of a suspending(!!!) functional type
    accept(fi) // ERROR: Type mismatch. Required: FI Found: suspend () → Unit

    accept(::foo)
    val x1 = ::foo
    accept(x1) // ERROR: Type mismatch. Required: FI Found: suspend () → Unit

    accept(::foo2)
    val x2 = ::foo2
    accept(x2) // ERROR: Type mismatch. Required: FI Found: suspend () → Unit

    return "OK"
}

