// WITH_STDLIB import kotlin.random.Random fun fun1() { } fun fun2() { } fun takesLambda(lambda: () -> Unit) { lambda() } fun takesOtherLambda(lambda: () -> Unit) = lambda() fun foo() {} fun bar2(): Int = 1 fun foo4(): K = 2 as K fun test1(): String { takesOtherLambda { val reference: () -> Unit = if (Random.nextBoolean()) { ::fun1 } else { ::fun2 } takesLambda(reference) } return "OK" } fun test2(): String { takesOtherLambda { val reference: () -> Unit = if (Random.nextBoolean()) ::fun1 else ::fun2 takesLambda(reference) } return "OK" } fun test3(): String { takesOtherLambda { val reference: () -> Unit = if (Random.nextBoolean()) { foo() ::fun1 } else { foo() ::fun2 } takesLambda(reference) } return "OK" } fun box(): String { return if (test1() == "OK" && test2() == "OK" && test3() == "OK") "OK" else "NOK" }