diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmPropertiesLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmPropertiesLowering.kt index 1f4fd25d6b9..58b7f2a3ff3 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmPropertiesLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmPropertiesLowering.kt @@ -46,9 +46,11 @@ class JvmPropertiesLowering(private val context: JvmBackendContext) : IrElementT private fun lowerProperty(declaration: IrDeclaration, kind: ClassKind): List? = if (declaration is IrProperty) ArrayList(4).apply { + val field = declaration.backingField + // JvmFields in a companion object refer to companion's owners and should not be generated within companion. - if (kind != ClassKind.ANNOTATION_CLASS && declaration.backingField?.parent == declaration.parent) { - addIfNotNull(declaration.backingField) + if ((kind != ClassKind.ANNOTATION_CLASS || field?.isStatic == true) && field?.parent == declaration.parent) { + addIfNotNull(field) } addIfNotNull(declaration.getter) addIfNotNull(declaration.setter) diff --git a/compiler/testData/codegen/box/annotations/constValInAnnotation.kt b/compiler/testData/codegen/box/annotations/constValInAnnotation.kt index ba55a800e1b..6654f1670d4 100644 --- a/compiler/testData/codegen/box/annotations/constValInAnnotation.kt +++ b/compiler/testData/codegen/box/annotations/constValInAnnotation.kt @@ -2,7 +2,6 @@ // IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME // TARGET_BACKEND: JVM -// IGNORE_BACKEND: JVM_IR // FILE: Foo.java @Anno(Anno.CONST) @@ -18,4 +17,3 @@ annotation class Anno(val value: Int) { fun box(): String = if ((Foo::class.java.annotations.single() as Anno).value == 42) "OK" else "Fail" -