// !LANGUAGE: +NewInference // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE // ISSUE: KT-36819 fun select(vararg x: K) = x[0] interface A class B: A class C: A fun id1(x: T): T = x fun id2(x: R): R = x class Out(x: R) fun main() { val x1 = select(id1 { B() }, id2 { C() }) val x2 = select({ B() }, { C() }) // OK, CST = () -> A val x3 = select(id1(Out(B())), id2(Out(C()))) // OK, CST = Out }