[SLC] fix annotation retention mapping

^KT-61377 Fixed
This commit is contained in:
Dmitrii Gridin
2023-08-21 18:28:45 +02:00
committed by Space Team
parent 566232fd0d
commit 695f6f0062
4 changed files with 8 additions and 10 deletions
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.StandardClassIds
import java.lang.annotation.ElementType
import java.lang.annotation.RetentionPolicy
internal object AbstractClassAdditionalAnnotationsProvider : AdditionalAnnotationsProvider {
override fun addAllAnnotations(
@@ -143,13 +144,18 @@ private fun javaRetentionArguments(kotlinRetentionName: String?): List<KtNamedAn
expression = KtEnumEntryAnnotationValue(
callableId = CallableId(
StandardClassIds.Annotations.Java.RetentionPolicy,
Name.identifier(kotlinRetentionName ?: AnnotationRetention.RUNTIME.name),
Name.identifier(retentionMapping(kotlinRetentionName ?: AnnotationRetention.RUNTIME.name)),
),
sourcePsi = null,
)
)
)
private fun retentionMapping(name: String): String = when (name) {
AnnotationRetention.BINARY.name -> RetentionPolicy.CLASS.name
else -> name
}
private fun GranularAnnotationsBox.tryConvertToRepeatableJavaAnnotation(
qualifiedName: String,
owner: PsiModifierList,
@@ -1,4 +0,0 @@
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.CLASS)
@kotlin.annotation.Retention(value = kotlin.annotation.AnnotationRetention.BINARY)
public abstract @interface Anno /* one.Anno*/ {
}
@@ -1,4 +1,4 @@
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.BINARY)
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.CLASS)
@kotlin.annotation.Retention(value = kotlin.annotation.AnnotationRetention.BINARY)
public abstract @interface Anno /* one.Anno*/ {
}
@@ -1,4 +0,0 @@
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.CLASS)
@kotlin.annotation.Retention(value = kotlin.annotation.AnnotationRetention.BINARY)
public abstract @interface Anno /* one.Anno*/ {
}