blob: 2a6e47126a960b6bde72702995a4761d5cc3870b [file]
@file:OptIn(ExperimentalVersionOverloading::class)
fun <T> genericCallableReference(
value: T,
@IntroducedAt("1") suffix: String = "!",
): String = "$value$suffix"
class GenericCallableReferenceHolder {
fun <T> render(
value: T,
@IntroducedAt("1") suffix: String = "!",
): String = "$value$suffix"
}
fun box(): String {
if (genericCallableReference("OK") != "OK!") return "FAIL top-level default"
val topLevelReference: (String, String) -> String = ::genericCallableReference
if (topLevelReference("O", "K") != "OK") return "FAIL top-level reference"
val holder = GenericCallableReferenceHolder()
if (holder.render("OK") != "OK!") return "FAIL member default"
val memberReference: (GenericCallableReferenceHolder, String, String) -> String =
GenericCallableReferenceHolder::render
if (memberReference(holder, "O", "K") != "OK") return "FAIL member reference"
return "OK"
}