diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtUltraLightClassForRepeatableAnnotationContainer.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtUltraLightClassForRepeatableAnnotationContainer.kt index b1d5cd9c4aa..33894fba889 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtUltraLightClassForRepeatableAnnotationContainer.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtUltraLightClassForRepeatableAnnotationContainer.kt @@ -79,7 +79,7 @@ private class KtUltraLightModifierListForRepeatableAnnotationContainer( private val containingClass: KtLightClassForSourceDeclaration, support: KtUltraLightSupport, ) : KtUltraLightModifierList(containingClass, support) { - override fun hasModifierProperty(name: String): Boolean = name == PsiModifier.PUBLIC + override fun hasModifierProperty(name: String): Boolean = name in modifiers override fun copy() = KtUltraLightModifierListForRepeatableAnnotationContainer(containingClass, support) override fun PsiAnnotation.additionalConverter(): KtLightAbstractAnnotation? = tryConvertAsRepeatableContainer(support) override val annotationsFilter: ((KtLightAbstractAnnotation) -> Boolean) = { it.qualifiedName in allowedAnnotations } @@ -92,5 +92,9 @@ private class KtUltraLightModifierListForRepeatableAnnotationContainer( CommonClassNames.JAVA_LANG_ANNOTATION_TARGET, StandardNames.FqNames.target.asString(), ) + + // It is marked as Abstract because all the annotation classes are marked as Abstract + // It is marked as Static because all nested interfaces marked as Static + private val modifiers = setOf(PsiModifier.PUBLIC, PsiModifier.ABSTRACT, PsiModifier.STATIC) } } diff --git a/compiler/testData/asJava/lightClasses/AnnotationRepeatable.java b/compiler/testData/asJava/lightClasses/AnnotationRepeatable.java index 3176bb621de..d900225c12b 100644 --- a/compiler/testData/asJava/lightClasses/AnnotationRepeatable.java +++ b/compiler/testData/asJava/lightClasses/AnnotationRepeatable.java @@ -7,7 +7,7 @@ public abstract @interface One /* simple.One*/ { @java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) @kotlin.jvm.internal.RepeatableContainer() -public @interface Container /* simple.One.Container*/ { +public static abstract @interface Container /* simple.One.Container*/ { public abstract simple.One[] value();// value() }} \ No newline at end of file diff --git a/compiler/testData/asJava/lightClasses/SpecialAnnotationsOnAnnotationClass.java b/compiler/testData/asJava/lightClasses/SpecialAnnotationsOnAnnotationClass.java index 604a21cd0ad..df002a5c890 100644 --- a/compiler/testData/asJava/lightClasses/SpecialAnnotationsOnAnnotationClass.java +++ b/compiler/testData/asJava/lightClasses/SpecialAnnotationsOnAnnotationClass.java @@ -15,7 +15,7 @@ public abstract @interface Anno /* Anno*/ { @kotlin.annotation.Retention(value = kotlin.annotation.AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets = {kotlin.annotation.AnnotationTarget.TYPE_PARAMETER, kotlin.annotation.AnnotationTarget.TYPE}) @kotlin.jvm.internal.RepeatableContainer() -public @interface Container /* Anno.Container*/ { +public static abstract @interface Container /* Anno.Container*/ { public abstract Anno[] value();// value() }} \ No newline at end of file diff --git a/compiler/testData/asJava/lightClasses/SpecialAnnotationsOnAnnotationClass_1_6.java b/compiler/testData/asJava/lightClasses/SpecialAnnotationsOnAnnotationClass_1_6.java index 4edbeee0885..a5d57291450 100644 --- a/compiler/testData/asJava/lightClasses/SpecialAnnotationsOnAnnotationClass_1_6.java +++ b/compiler/testData/asJava/lightClasses/SpecialAnnotationsOnAnnotationClass_1_6.java @@ -15,7 +15,7 @@ public abstract @interface Anno /* Anno*/ { @kotlin.annotation.Retention(value = kotlin.annotation.AnnotationRetention.SOURCE) @kotlin.annotation.Target(allowedTargets = {kotlin.annotation.AnnotationTarget.TYPE_PARAMETER, kotlin.annotation.AnnotationTarget.TYPE}) @kotlin.jvm.internal.RepeatableContainer() -public @interface Container /* Anno.Container*/ { +public static abstract @interface Container /* Anno.Container*/ { public abstract Anno[] value();// value() }} \ No newline at end of file