blob: 68a22434511f1e4cd2fed302770cc6d956e20bfe [file]
// TARGET_BACKEND: JVM
// WITH_STDLIB
class A {
fun memberFunction() {}
val memberProperty: String = ""
}
val topLevelProperty: Int = 0
fun A.extensionFunction() {}
val A.extensionProperty: String get() = ""
fun check(reference: Any, expected: String, message: String) {
val actual = reference.javaClass.declaredMethods.map { it.name }.sorted().toString()
if (expected != actual) {
throw AssertionError("Fail on $message. Expected: $expected. Actual: $actual")
}
}
fun box(): String {
check(A::memberFunction, "[invoke, invoke]", "unbound function reference")
check(A()::memberFunction, "[invoke, invoke]", "bound function reference")
check(::topLevelProperty, "[get]", "unbound top-level property reference 0")
check(A::memberProperty, "[get]", "unbound member property reference 1")
check(A()::memberProperty, "[get]", "bound member property reference 1")
check(A::extensionProperty, "[get]", "unbound extension property reference 1")
check(A()::extensionProperty, "[get]", "bound extension property reference 1")
return "OK"
}