| // MODULE: lib |
| // FILE: 1.kt |
| |
| import kotlin.reflect.* |
| |
| annotation class Anno( |
| val k: KClass<*>, |
| val e: C.NestedEnum, |
| val a: C.NestedAnno, |
| ) |
| |
| annotation class AnnoWithDefault(val k: KClass<*> = Nested0::class) { |
| class Nested0 |
| } |
| |
| class C { |
| class Nested1 |
| |
| enum class NestedEnum { E } |
| |
| annotation class NestedAnno(val k: KClass<*>) { |
| class Nested2 |
| } |
| } |
| |
| interface I { |
| @Anno( |
| C.Nested1::class, |
| C.NestedEnum.E, |
| C.NestedAnno(C.NestedAnno.Nested2::class), |
| ) |
| @AnnoWithDefault |
| fun foo(): String = "OK" |
| } |
| |
| // MODULE: main(lib) |
| // FILE: 2.kt |
| |
| class D : I { |
| fun box(): String = foo() |
| } |
| |
| fun box(): String = D().box() |