K2: calculate deprecations for backing field properly

#KT-58224 Fixed
This commit is contained in:
Mikhail Glukhikh
2023-04-27 16:38:11 +02:00
committed by Space Team
parent 94c94d0605
commit 180613e1c6
5 changed files with 18 additions and 1 deletions
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
import org.jetbrains.kotlin.fir.analysis.checkers.getAllowedAnnotationTargets import org.jetbrains.kotlin.fir.analysis.checkers.getAllowedAnnotationTargets
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.languageVersionSettings 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.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
@@ -46,6 +47,9 @@ internal class KtFirSymbolInfoProvider(
firSymbol.getDeprecationForCallSite(apiVersion, AnnotationUseSiteTarget.PROPERTY) firSymbol.getDeprecationForCallSite(apiVersion, AnnotationUseSiteTarget.PROPERTY)
?: firSymbol.backingFieldSymbol?.getDeprecationForCallSite(apiVersion, AnnotationUseSiteTarget.FIELD) ?: firSymbol.backingFieldSymbol?.getDeprecationForCallSite(apiVersion, AnnotationUseSiteTarget.FIELD)
} }
is FirBackingFieldSymbol -> {
firSymbol.getDeprecationForCallSite(apiVersion, AnnotationUseSiteTarget.FIELD)
}
else -> { else -> {
firSymbol.getDeprecationForCallSite(apiVersion) firSymbol.getDeprecationForCallSite(apiVersion)
} }
@@ -1,4 +1,7 @@
// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1 // DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE_K1
import java.lang.Deprecated
annotation class PropertyAnnotation annotation class PropertyAnnotation
annotation class FieldAnnotation annotation class FieldAnnotation
annotation class GetAnnotation annotation class GetAnnotation
@@ -10,6 +13,7 @@ annotation class ExplicitSetparamAnnotation
@property:PropertyAnnotation @property:PropertyAnnotation
@field:FieldAnnotation @field:FieldAnnotation
@field:Deprecated
@get:GetAnnotation @get:GetAnnotation
@set:SetAnnotation @set:SetAnnotation
@setparam:SetparamAnnotation @setparam:SetparamAnnotation
@@ -1,2 +1,3 @@
@FieldAnnotation @FieldAnnotation
@java.lang.Deprecated
field field
@@ -2,6 +2,8 @@ KtBackingFieldSymbol:
annotationsList: [ annotationsList: [
FieldAnnotation() FieldAnnotation()
psi: KtAnnotationEntry psi: KtAnnotationEntry
java/lang/Deprecated()
psi: KtAnnotationEntry
] ]
callableIdIfNonLocal: null callableIdIfNonLocal: null
contextReceivers: [] contextReceivers: []
@@ -17,4 +19,4 @@ KtBackingFieldSymbol:
symbolKind: LOCAL symbolKind: LOCAL
typeParameters: [] typeParameters: []
getContainingModule: KtSourceModule "Sources of main" getContainingModule: KtSourceModule "Sources of main"
deprecationStatus: null deprecationStatus: DeprecationInfo(deprecationLevel=WARNING, propagatesToOverrides=false, message=null)
@@ -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( override fun transformSimpleFunction(
simpleFunction: FirSimpleFunction, simpleFunction: FirSimpleFunction,
data: Any?, data: Any?,