Files
kotlin-fork/compiler/testData/codegen/box/callableReference/optimizedSuperclasses_before.kt
T
Ivan Kylchik c7435ba760 Replace all occurrences of WITH_RUNTIME with WITH_STDLIB
We are going to deprecate `WITH_RUNTIME` directive. The main reason
behind this change is that `WITH_STDLIB` directive better describes
its meaning, specifically it will add kotlin stdlib to test's classpath.
2021-11-17 15:26:38 +03:00

29 lines
1020 B
Kotlin
Vendored

// !API_VERSION: 1.3
// TARGET_BACKEND: JVM
// WITH_STDLIB
class A {
fun memberFunction() {}
val memberProperty: String = ""
}
val topLevelProperty: Int = 0
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, "[getName, getOwner, getSignature, invoke, invoke]", "unbound function reference")
check(A()::memberFunction, "[getName, getOwner, getSignature, invoke, invoke]", "bound function reference")
check(::topLevelProperty, "[get, getName, getOwner, getSignature]", "unbound property reference 0")
check(A::memberProperty, "[get, getName, getOwner, getSignature]", "unbound property reference 1")
check(A()::memberProperty, "[get, getName, getOwner, getSignature]", "bound property reference 1")
return "OK"
}