// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_ANONYMOUS_PARAMETER fun select(vararg x: T) = x[0] fun id(x: K): K = x fun Unit, K: T> takeSuspend(x: T, y: K) = x fun Unit, K: T> takeSimpleFunction(x: T, y: K) = x fun main() { select(suspend {}, kotlin.Unit")!>{}) select( kotlin.Unit")!>{}, suspend {}) select( kotlin.Unit")!>id {}, suspend {}) select( kotlin.Unit")!>id {}, id(suspend {})) select( kotlin.Unit")!>id {}, id Unit> {}) takeSuspend( kotlin.Unit")!>id { it }, kotlin.Unit")!>{ x -> x }) val x1: suspend (Int) -> Unit = takeSuspend( kotlin.Unit")!>id { it }, kotlin.Unit")!>{ x -> x }) // Here, the error should be val x2: (Int) -> Unit = takeSuspend( kotlin.Unit")!>id { it }, kotlin.Unit"), TYPE_MISMATCH!>{ x -> x }) val x3: suspend (Int) -> Unit = takeSimpleFunction( kotlin.Unit")!>id { it }, kotlin.Unit"), TYPE_MISMATCH!>{ x -> x }) val x4: (Int) -> Unit = takeSimpleFunction(id Unit> {}, kotlin.Unit"), TYPE_MISMATCH!>{}) }