diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolInfoProvider.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolInfoProvider.kt index f2355a8e145..731b69a730e 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolInfoProvider.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirSymbolInfoProvider.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget import org.jetbrains.kotlin.fir.analysis.checkers.getAllowedAnnotationTargets import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.languageVersionSettings +import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.name.Name @@ -46,6 +47,9 @@ internal class KtFirSymbolInfoProvider( firSymbol.getDeprecationForCallSite(apiVersion, AnnotationUseSiteTarget.PROPERTY) ?: firSymbol.backingFieldSymbol?.getDeprecationForCallSite(apiVersion, AnnotationUseSiteTarget.FIELD) } + is FirBackingFieldSymbol -> { + firSymbol.getDeprecationForCallSite(apiVersion, AnnotationUseSiteTarget.FIELD) + } else -> { firSymbol.getDeprecationForCallSite(apiVersion) } diff --git a/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.kt b/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.kt index bdf2ac967ee..a0174f04695 100644 --- a/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.kt +++ b/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.kt @@ -1,4 +1,7 @@ // DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 + +import java.lang.Deprecated + annotation class PropertyAnnotation annotation class FieldAnnotation annotation class GetAnnotation @@ -10,6 +13,7 @@ annotation class ExplicitSetparamAnnotation @property:PropertyAnnotation @field:FieldAnnotation +@field:Deprecated @get:GetAnnotation @set:SetAnnotation @setparam:SetparamAnnotation diff --git a/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.pretty.txt b/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.pretty.txt index 89c3d3c625a..e5aa0da6c5a 100644 --- a/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.pretty.txt +++ b/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.pretty.txt @@ -1,2 +1,3 @@ @FieldAnnotation +@java.lang.Deprecated field \ No newline at end of file diff --git a/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.txt b/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.txt index 0db4f94f62d..f676ba68d8d 100644 --- a/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.txt +++ b/analysis/analysis-api/testData/symbols/symbolByReference/accessorField.txt @@ -2,6 +2,8 @@ KtBackingFieldSymbol: annotationsList: [ FieldAnnotation() psi: KtAnnotationEntry + java/lang/Deprecated() + psi: KtAnnotationEntry ] callableIdIfNonLocal: null contextReceivers: [] @@ -17,4 +19,4 @@ KtBackingFieldSymbol: symbolKind: LOCAL typeParameters: [] getContainingModule: KtSourceModule "Sources of main" - deprecationStatus: null \ No newline at end of file + deprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=false, message=null) \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt index 4553b7582fb..2b5cb31fd94 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt @@ -239,6 +239,12 @@ open class FirTypeResolveTransformer( } } + override fun transformBackingField(backingField: FirBackingField, data: Any?): FirStatement = whileAnalysing(session, backingField) { + backingField.transformAnnotations(this, data) + calculateDeprecations(backingField) + super.transformBackingField(backingField, data) + } + override fun transformSimpleFunction( simpleFunction: FirSimpleFunction, data: Any?,