diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt index 89e686b53e4..8ac1771d19f 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.ir.util.isAnnotationClass import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.utils.addToStdlib.safeAs +import java.lang.annotation.ElementType internal val additionalClassAnnotationPhase = makeIrFilePhase( ::AdditionalClassAnnotationLowering, @@ -192,7 +193,9 @@ private class AdditionalClassAnnotationLowering(private val context: JvmBackendC ?: throw AssertionError("No annotation target map for JVM target $jvmTarget") val targets = irClass.applicableTargetSet() ?: return - val javaTargets = targets.mapNotNull { annotationTargetMap[it] }.toSet() + val javaTargets = targets.mapNotNullTo(HashSet()) { annotationTargetMap[it] }.sortedBy { + ElementType.valueOf(it.symbol.owner.name.asString()) + } val vararg = IrVarargImpl( UNDEFINED_OFFSET, UNDEFINED_OFFSET, diff --git a/compiler/testData/codegen/box/annotations/annotationTargets.kt b/compiler/testData/codegen/box/annotations/annotationTargets.kt index 0f97278cf21..093fd518ad6 100644 --- a/compiler/testData/codegen/box/annotations/annotationTargets.kt +++ b/compiler/testData/codegen/box/annotations/annotationTargets.kt @@ -11,12 +11,9 @@ public annotation class TestAnn fun box(): String { val testAnnClass = TestAnn::class.java val targetAnn = testAnnClass.getAnnotation(java.lang.annotation.Target::class.java) - val targets = targetAnn.value - if (targets.size != 2) { - return targets.toList().toString() - } - if (targets.toSet() != setOf(java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD)) { - return targets.toList().toString() + val targets = targetAnn.value.toList() + if (targets != listOf(java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD)) { + return targets.toString() } return "OK" }