| // FILE: annotations.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 |
| } |
| } |
| |
| // FILE: usage.kt |
| |
| interface I { |
| @Anno( |
| C.Nested1::class, |
| C.NestedEnum.E, |
| C.NestedAnno(C.NestedAnno.Nested2::class), |
| ) |
| @AnnoWithDefault |
| fun foo(): String = "OK" |
| } |
| |
| // @I.class: |
| // 5 INNERCLASS |
| // 1 INNERCLASS C\$Nested1 C Nested1 |
| // 1 INNERCLASS C\$NestedEnum C NestedEnum |
| // 1 INNERCLASS C\$NestedAnno C NestedAnno |
| // 1 INNERCLASS C\$NestedAnno\$Nested2 C\$NestedAnno Nested2 |
| // 1 INNERCLASS I\$DefaultImpls I DefaultImpls |