JVM IR: do not erase static fields in annotation classes
This commit is contained in:
+4
-2
@@ -46,9 +46,11 @@ class JvmPropertiesLowering(private val context: JvmBackendContext) : IrElementT
|
||||
private fun lowerProperty(declaration: IrDeclaration, kind: ClassKind): List<IrDeclaration>? =
|
||||
if (declaration is IrProperty)
|
||||
ArrayList<IrDeclaration>(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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user