diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index 82d5c6e6cf3..7cead9209b8 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -340,7 +340,7 @@ class JavaSymbolProvider( returnTypeRef = returnType.toFirJavaTypeRef(this@JavaSymbolProvider.session, javaTypeParameterStack) isVar = !javaField.isFinal isStatic = javaField.isStatic - addAnnotationsFrom(this@JavaSymbolProvider.session, javaField, javaTypeParameterStack) + annotationBuilder = { javaField.annotations.map { it.toFirAnnotationCall(session, javaTypeParameterStack) }} initializer = convertJavaInitializerToFir(javaField.initializerValue) if (!javaField.isStatic) { diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt index cc4db634ec7..e2c5c420af1 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt @@ -40,7 +40,7 @@ class FirJavaField @FirImplementationDetail constructor( override var returnTypeRef: FirTypeRef, override var status: FirDeclarationStatus, override val isVar: Boolean, - override val annotations: MutableList, + annotationBuilder: () -> List, override val typeParameters: MutableList, override var initializer: FirExpression?, override val dispatchReceiverType: ConeKotlinType?, @@ -58,6 +58,9 @@ class FirJavaField @FirImplementationDetail constructor( override val origin: FirDeclarationOrigin get() = FirDeclarationOrigin.Java + override val annotations: List by lazy { annotationBuilder() } + + override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirField { returnTypeRef = returnTypeRef.transformSingle(transformer, data) return this @@ -109,7 +112,6 @@ class FirJavaField @FirImplementationDetail constructor( } override fun transformAnnotations(transformer: FirTransformer, data: D): FirJavaField { - annotations.transformInplace(transformer, data) return this } @@ -147,6 +149,7 @@ internal class FirJavaFieldBuilder : FirFieldBuilder() { lateinit var visibility: Visibility var isStatic: Boolean by Delegates.notNull() var initializer: FirExpression? = null + lateinit var annotationBuilder: () -> List override var resolvePhase: FirResolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES @@ -161,7 +164,7 @@ internal class FirJavaFieldBuilder : FirFieldBuilder() { returnTypeRef, status, isVar, - annotations, + annotationBuilder, typeParameters, initializer, dispatchReceiverType, diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt index b671e9e07bb..0961d5c0585 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt @@ -102,7 +102,7 @@ class FirSignatureEnhancement( modality = firElement.modality isVar = firElement.isVar isStatic = firElement.isStatic - annotations += firElement.annotations + annotationBuilder = { firElement.annotations } status = firElement.status initializer = firElement.initializer dispatchReceiverType = firElement.dispatchReceiverType