31 lines
587 B
Kotlin
Vendored
31 lines
587 B
Kotlin
Vendored
// WITH_REFLECT
|
|
// TARGET_BACKEND: JVM
|
|
import kotlin.reflect.full.declaredFunctions
|
|
|
|
annotation class Anno(val value: String)
|
|
|
|
@JvmInline
|
|
value class A(val value: String)
|
|
|
|
abstract class B {
|
|
@Anno(value = "K")
|
|
abstract fun f(): A?
|
|
}
|
|
|
|
class C : B() {
|
|
override fun f(): A? = A("O")
|
|
}
|
|
|
|
class D : B() {
|
|
override fun f(): Nothing? = null
|
|
}
|
|
|
|
fun box(): String {
|
|
val o = if ((D() as B).f() == null) (C() as B).f()!!.value else "Fail"
|
|
|
|
val annotations = B::class.declaredFunctions.single().annotations
|
|
val k = (annotations.single() as Anno).value
|
|
|
|
return o + k
|
|
}
|