Support new repeatable annotations in kotlin-reflect

- Unwrap Kotlin-repeatable annotations (with implicit container)
- Introduce `KAnnotatedElement.findAnnotations` to find instances of
  repeated annotations

 #KT-12794
This commit is contained in:
Alexander Udalov
2021-07-24 03:33:42 +02:00
parent 67128c022a
commit 0a6d010d1c
23 changed files with 448 additions and 3 deletions
@@ -1,3 +1,4 @@
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=RUNTIME)
@kotlin.Metadata
public annotation class test/A$Container {
@@ -1,4 +1,5 @@
@kotlin.annotation.Target(allowedTargets=[FILE, TYPEALIAS])
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=RUNTIME)
@java.lang.annotation.Target(value=[])
@kotlin.Metadata
@@ -1,3 +1,4 @@
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=RUNTIME)
@kotlin.Metadata
public annotation class test/A$Container {
@@ -16,6 +17,7 @@ public annotation class test/A {
public inner class test/A$Container
}
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=RUNTIME)
@kotlin.Metadata
public annotation class test/B$Container {
@@ -34,6 +36,7 @@ public annotation class test/B {
public inner class test/B$Container
}
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=RUNTIME)
@kotlin.Metadata
public annotation class test/C$Container {
@@ -1,4 +1,5 @@
@kotlin.annotation.Retention(value=BINARY)
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=CLASS)
@kotlin.Metadata
public annotation class RetentionBinary$Container {
@@ -17,6 +18,7 @@ public annotation class RetentionBinary {
public inner class RetentionBinary$Container
}
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=RUNTIME)
@kotlin.Metadata
public annotation class RetentionRuntime$Container {
@@ -35,6 +37,7 @@ public annotation class RetentionRuntime {
}
@kotlin.annotation.Retention(value=SOURCE)
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=SOURCE)
@kotlin.Metadata
public annotation class RetentionSource$Container {
@@ -54,6 +57,7 @@ public annotation class RetentionSource {
}
@kotlin.annotation.Target(allowedTargets=[ANNOTATION_CLASS, TYPE])
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=RUNTIME)
@java.lang.annotation.Target(value=[ANNOTATION_TYPE, TYPE_USE])
@kotlin.Metadata
@@ -75,6 +79,7 @@ public annotation class TargetAnnotationClassAndTypeOnly {
}
@kotlin.annotation.Target(allowedTargets=[CLASS])
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=RUNTIME)
@java.lang.annotation.Target(value=[TYPE])
@kotlin.Metadata
@@ -96,6 +101,7 @@ public annotation class TargetClassOnly {
}
@kotlin.annotation.Target(allowedTargets=[])
@kotlin.jvm.internal.RepeatableContainer
@java.lang.annotation.Retention(value=RUNTIME)
@java.lang.annotation.Target(value=[])
@kotlin.Metadata