blob: 1a0653d0303a2479f8130080a360ae2e25b31e92 [file]
// DUMP_IR
// DUMP_IR_AFTER_INLINE
class A<T> {
fun bar(x: T): T = x
}
fun <T> foo(x: T): T = x
fun <T> A<T>.foo(x: T): T = bar(x)
class A2<T: CharSequence> {
fun bar2(x: T): T = x
}
fun <T : CharSequence> foo2(x: T): T = x
fun <T : CharSequence> A2<T>.foo2(x: T): T = bar2(x)
class A3<T: Comparable<T>> {
fun bar3(x: T): T = x
}
fun <T : Comparable<T>> foo3(x: T): T = x
fun <T : Comparable<T>> A3<T>.foo3(x: T): T = bar3(x)
fun box(): String {
val r1: (Int) -> Int = ::foo
val r2 = A<Int>::foo
val r3 = A<*>::foo
val r4 = A<Int>::bar
val r5 = A<*>::bar
val s1: (String) -> String = ::foo2
val s2 = A2<String>::foo2
val s3 = A2<*>::foo2
val s4 = A2<String>::bar2
val s5 = A2<*>::bar2
val t1: (String) -> String = ::foo3
val t2 = A3<String>::foo3
val t3 = A3<*>::foo3
val t4 = A3<String>::bar3
val t5 = A3<*>::bar3
return "OK"
}