| // 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 |
| } |