diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 163796471b9..99e3d79873b 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -590,6 +590,7 @@ class Fir2IrDeclarationStorage( get() = when { isLateInit -> setter?.visibility ?: status.visibility isConst -> status.visibility + hasJvmFieldAnnotation -> status.visibility else -> Visibilities.PRIVATE } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt index 610ebab7c1b..40cefb615c3 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirDeclarationUtil.kt @@ -32,8 +32,6 @@ fun FirTypeParameterBuilder.addDefaultBoundIfNecessary(isFlexible: Boolean = fal } } -inline val FirDeclaration.isFromLibrary: Boolean - get() = origin == FirDeclarationOrigin.Library inline val FirRegularClass.isInner get() = status.isInner inline val FirRegularClass.isCompanion get() = status.isCompanion inline val FirRegularClass.isData get() = status.isData @@ -114,12 +112,20 @@ fun FirRegularClass.addDeclaration(declaration: FirDeclaration) { } } -private object IsFromVarargKey: FirDeclarationDataKey() +private object IsFromVarargKey : FirDeclarationDataKey() var FirProperty.isFromVararg: Boolean? by FirDeclarationDataRegistry.data(IsFromVarargKey) +inline val FirProperty.hasJvmFieldAnnotation: Boolean + get() = annotations.any { + val classId = it.annotationTypeRef.coneTypeSafe()?.classId + classId?.packageFqName?.asString() == "kotlin.jvm" && classId.relativeClassName.asString() == "JvmField" + } + fun FirAnnotatedDeclaration.hasAnnotation(classId: ClassId): Boolean { return annotations.any { it.annotationTypeRef.coneTypeSafe()?.classId == classId } } +inline val FirDeclaration.isFromLibrary: Boolean + get() = origin == FirDeclarationOrigin.Library inline val FirDeclaration.isSynthetic: Boolean get() = origin == FirDeclarationOrigin.Synthetic diff --git a/compiler/testData/codegen/box/annotations/annotationWithKotlinProperty.kt b/compiler/testData/codegen/box/annotations/annotationWithKotlinProperty.kt index 5ddd3bee8be..90465c615a8 100644 --- a/compiler/testData/codegen/box/annotations/annotationWithKotlinProperty.kt +++ b/compiler/testData/codegen/box/annotations/annotationWithKotlinProperty.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/inlineClasses/jvmFieldInInlineClassCompanion.kt b/compiler/testData/codegen/box/inlineClasses/jvmFieldInInlineClassCompanion.kt index 32c5a1a8021..904040f057b 100644 --- a/compiler/testData/codegen/box/inlineClasses/jvmFieldInInlineClassCompanion.kt +++ b/compiler/testData/codegen/box/inlineClasses/jvmFieldInInlineClassCompanion.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/jvmField/constructorProperty.kt b/compiler/testData/codegen/box/jvmField/constructorProperty.kt index a399f83f4de..8801d0805a5 100644 --- a/compiler/testData/codegen/box/jvmField/constructorProperty.kt +++ b/compiler/testData/codegen/box/jvmField/constructorProperty.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/jvmField/publicFieldJava.kt b/compiler/testData/codegen/box/jvmField/publicFieldJava.kt index 81b4c2718e7..43b71c9d5bd 100644 --- a/compiler/testData/codegen/box/jvmField/publicFieldJava.kt +++ b/compiler/testData/codegen/box/jvmField/publicFieldJava.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/jvmField/simpleMemberProperty.kt b/compiler/testData/codegen/box/jvmField/simpleMemberProperty.kt index 382fa9c0723..46459db5fa4 100644 --- a/compiler/testData/codegen/box/jvmField/simpleMemberProperty.kt +++ b/compiler/testData/codegen/box/jvmField/simpleMemberProperty.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/jvmField/visibility.kt b/compiler/testData/codegen/box/jvmField/visibility.kt index eec8ee13147..2a1415f0b8c 100644 --- a/compiler/testData/codegen/box/jvmField/visibility.kt +++ b/compiler/testData/codegen/box/jvmField/visibility.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/jvmStatic/enumCompanion.kt b/compiler/testData/codegen/box/jvmStatic/enumCompanion.kt index 240a1cc64f5..5ec71179efb 100644 --- a/compiler/testData/codegen/box/jvmStatic/enumCompanion.kt +++ b/compiler/testData/codegen/box/jvmStatic/enumCompanion.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/properties/companionObjectPropertiesFromJava.kt b/compiler/testData/codegen/box/properties/companionObjectPropertiesFromJava.kt index 092d835d999..db37345cc34 100644 --- a/compiler/testData/codegen/box/properties/companionObjectPropertiesFromJava.kt +++ b/compiler/testData/codegen/box/properties/companionObjectPropertiesFromJava.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/codegen/box/reflection/genericSignature/kt5112.kt b/compiler/testData/codegen/box/reflection/genericSignature/kt5112.kt index 1d6b97f1803..95925d29772 100644 --- a/compiler/testData/codegen/box/reflection/genericSignature/kt5112.kt +++ b/compiler/testData/codegen/box/reflection/genericSignature/kt5112.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT diff --git a/compiler/testData/codegen/box/reflection/mapping/interfaceCompanionPropertyWithJvmField.kt b/compiler/testData/codegen/box/reflection/mapping/interfaceCompanionPropertyWithJvmField.kt index 912ea3b3adb..7f696a82d9f 100644 --- a/compiler/testData/codegen/box/reflection/mapping/interfaceCompanionPropertyWithJvmField.kt +++ b/compiler/testData/codegen/box/reflection/mapping/interfaceCompanionPropertyWithJvmField.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +JvmFieldInInterface -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_REFLECT