[FIR] Optimize FirDeprecationChecker

This commit is contained in:
Ivan Kochurkin
2021-10-26 20:17:22 +03:00
committed by teamcity
parent 13865e52f8
commit ee490128fc
@@ -24,30 +24,24 @@ import org.jetbrains.kotlin.name.StandardClassIds.Annotations.ParameterNames.dep
import org.jetbrains.kotlin.resolve.deprecation.DeprecationInfo import org.jetbrains.kotlin.resolve.deprecation.DeprecationInfo
import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue
import org.jetbrains.kotlin.resolve.deprecation.SimpleDeprecationInfo import org.jetbrains.kotlin.resolve.deprecation.SimpleDeprecationInfo
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.addToStdlib.safeAs import org.jetbrains.kotlin.utils.addToStdlib.safeAs
private val JAVA_ORIGINS = setOf(FirDeclarationOrigin.Java, FirDeclarationOrigin.Enhancement) private val JAVA_ORIGINS = setOf(FirDeclarationOrigin.Java, FirDeclarationOrigin.Enhancement)
fun FirBasedSymbol<*>.getDeprecation(callSite: FirElement?): DeprecationInfo? { fun FirBasedSymbol<*>.getDeprecation(callSite: FirElement?): DeprecationInfo? {
val deprecationInfos = mutableListOf<DeprecationInfo>() return when (this) {
when (this) {
is FirPropertySymbol -> is FirPropertySymbol ->
when (callSite) { when (callSite) {
is FirVariableAssignment -> is FirVariableAssignment ->
deprecationInfos.addIfNotNull( getDeprecationForCallSite(AnnotationUseSiteTarget.PROPERTY_SETTER, AnnotationUseSiteTarget.PROPERTY)
getDeprecationForCallSite(AnnotationUseSiteTarget.PROPERTY_SETTER, AnnotationUseSiteTarget.PROPERTY)
)
is FirPropertyAccessExpression -> is FirPropertyAccessExpression ->
deprecationInfos.addIfNotNull( getDeprecationForCallSite(AnnotationUseSiteTarget.PROPERTY_GETTER, AnnotationUseSiteTarget.PROPERTY)
getDeprecationForCallSite(AnnotationUseSiteTarget.PROPERTY_GETTER, AnnotationUseSiteTarget.PROPERTY) else ->
) getDeprecationForCallSite(AnnotationUseSiteTarget.PROPERTY)
else -> deprecationInfos.addIfNotNull(getDeprecationForCallSite(AnnotationUseSiteTarget.PROPERTY))
} }
else -> deprecationInfos.addIfNotNull(getDeprecationForCallSite()) else ->
getDeprecationForCallSite()
} }
return deprecationInfos.firstOrNull()
} }
fun FirAnnotationContainer.getDeprecationInfos(currentVersion: ApiVersion): DeprecationsPerUseSite { fun FirAnnotationContainer.getDeprecationInfos(currentVersion: ApiVersion): DeprecationsPerUseSite {