[FIR] DeprecationProvider: inline builder, fix named arguments, cosmetic
This commit is contained in:
committed by
teamcity
parent
a80870bc8f
commit
539e5f82e2
+2
-2
@@ -74,11 +74,11 @@ object FirDeprecationChecker : FirBasicExpressionChecker() {
|
||||
context: CheckerContext
|
||||
): DeprecationInfo? {
|
||||
val deprecationInfos = listOfNotNull(
|
||||
symbol.getDeprecation(context.languageVersionSettings.apiVersion, callSite),
|
||||
symbol.getDeprecation(context.session, callSite),
|
||||
symbol.safeAs<FirConstructorSymbol>()
|
||||
?.resolvedReturnTypeRef
|
||||
?.toRegularClassSymbol(context.session)
|
||||
?.getDeprecation(context.languageVersionSettings.apiVersion, callSite)
|
||||
?.getDeprecation(context.session, callSite)
|
||||
)
|
||||
return deprecationInfos.maxOrNull()
|
||||
}
|
||||
|
||||
+3
-3
@@ -422,7 +422,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
||||
}
|
||||
this.containerSource = c.containerSource
|
||||
this.initializer = c.constDeserializer.loadConstant(proto, symbol.callableId, c.nameResolver)
|
||||
deprecationsProvider = annotations.getDeprecationsProviderFromAnnotations(false, c.session.firCachesFactory)
|
||||
deprecationsProvider = annotations.getDeprecationsProviderFromAnnotations(fromJava = false, c.session.firCachesFactory)
|
||||
|
||||
proto.contextReceiverTypes(c.typeTable).mapTo(contextReceivers, ::loadContextReceiver)
|
||||
}.apply {
|
||||
@@ -500,7 +500,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
||||
)
|
||||
annotations +=
|
||||
c.annotationDeserializer.loadFunctionAnnotations(c.containerSource, proto, local.nameResolver, local.typeTable)
|
||||
deprecationsProvider = annotations.getDeprecationsProviderFromAnnotations(false, c.session.firCachesFactory)
|
||||
deprecationsProvider = annotations.getDeprecationsProviderFromAnnotations(fromJava = false, c.session.firCachesFactory)
|
||||
this.containerSource = c.containerSource
|
||||
|
||||
proto.contextReceiverTypes(c.typeTable).mapTo(contextReceivers, ::loadContextReceiver)
|
||||
@@ -579,7 +579,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
|
||||
annotations +=
|
||||
c.annotationDeserializer.loadConstructorAnnotations(c.containerSource, proto, local.nameResolver, local.typeTable)
|
||||
containerSource = c.containerSource
|
||||
deprecationsProvider = annotations.getDeprecationsProviderFromAnnotations(false, c.session.firCachesFactory)
|
||||
deprecationsProvider = annotations.getDeprecationsProviderFromAnnotations(fromJava = false, c.session.firCachesFactory)
|
||||
|
||||
contextReceivers.addAll(createContextReceiversForClass(classProto))
|
||||
}.build().apply {
|
||||
|
||||
@@ -62,7 +62,7 @@ class FirJavaField @FirImplementationDetail constructor(
|
||||
override val annotations: List<FirAnnotation> by lazy { annotationBuilder() }
|
||||
|
||||
override val deprecationsProvider: DeprecationsProvider by lazy {
|
||||
annotations.getDeprecationsProviderFromAnnotations(true, moduleData.session.firCachesFactory)
|
||||
annotations.getDeprecationsProviderFromAnnotations(fromJava = true, moduleData.session.firCachesFactory)
|
||||
}
|
||||
|
||||
override val contextReceivers: List<FirContextReceiver>
|
||||
|
||||
+1
-1
@@ -320,7 +320,7 @@ class FirSignatureEnhancement(
|
||||
else -> throw AssertionError("Unknown Java method to enhance: ${firMethod.render()}")
|
||||
}.apply {
|
||||
annotations += firMethod.annotations
|
||||
deprecationsProvider = annotations.getDeprecationsProviderFromAnnotations(true, session.firCachesFactory)
|
||||
deprecationsProvider = annotations.getDeprecationsProviderFromAnnotations(fromJava = true, session.firCachesFactory)
|
||||
}.build()
|
||||
|
||||
return function.symbol
|
||||
|
||||
+11
-2
@@ -9,9 +9,11 @@ import org.jetbrains.kotlin.config.ApiVersion
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.caches.FirCachesFactory
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isJavaOrEnhancement
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.languageVersionSettings
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
@@ -64,11 +66,15 @@ class DeprecationAnnotationInfoPerUseSiteStorageBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
fun buildDeprecationAnnotationInfoPerUseSiteStorage(builder: DeprecationAnnotationInfoPerUseSiteStorageBuilder.() -> Unit)
|
||||
inline fun buildDeprecationAnnotationInfoPerUseSiteStorage(builder: DeprecationAnnotationInfoPerUseSiteStorageBuilder.() -> Unit)
|
||||
: DeprecationAnnotationInfoPerUseSiteStorage {
|
||||
return DeprecationAnnotationInfoPerUseSiteStorageBuilder().apply(builder).build()
|
||||
}
|
||||
|
||||
fun FirBasedSymbol<*>.getDeprecation(session: FirSession, callSite: FirElement?): DeprecationInfo? {
|
||||
return getDeprecation(session.languageVersionSettings.apiVersion, callSite)
|
||||
}
|
||||
|
||||
fun FirBasedSymbol<*>.getDeprecation(apiVersion: ApiVersion, callSite: FirElement?): DeprecationInfo? {
|
||||
return when (this) {
|
||||
is FirPropertySymbol ->
|
||||
@@ -130,7 +136,10 @@ fun getDeprecationsAnnotationInfoByUseSiteFromAccessors(
|
||||
}
|
||||
}
|
||||
|
||||
fun List<FirAnnotation>.getDeprecationsProviderFromAnnotations(fromJava: Boolean, firCachesFactory: FirCachesFactory): DeprecationsProvider {
|
||||
fun List<FirAnnotation>.getDeprecationsProviderFromAnnotations(
|
||||
fromJava: Boolean,
|
||||
firCachesFactory: FirCachesFactory
|
||||
): DeprecationsProvider {
|
||||
val deprecationAnnotationByUseSite = extractDeprecationAnnotationInfoPerUseSite(fromJava)
|
||||
return deprecationAnnotationByUseSite.toDeprecationsProvider(firCachesFactory)
|
||||
}
|
||||
|
||||
@@ -630,7 +630,7 @@ internal object CheckCallModifiers : CheckerStage() {
|
||||
internal object CheckDeprecatedSinceKotlin : ResolutionStage() {
|
||||
override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) {
|
||||
val symbol = candidate.symbol as? FirCallableSymbol<*> ?: return
|
||||
val deprecation = symbol.getDeprecation(context.session.languageVersionSettings.apiVersion, callInfo.callSite)
|
||||
val deprecation = symbol.getDeprecation(context.session, callInfo.callSite)
|
||||
if (deprecation != null && deprecation.deprecationLevel == DeprecationLevelValue.HIDDEN) {
|
||||
sink.yieldDiagnostic(HiddenCandidate)
|
||||
}
|
||||
|
||||
+1
-1
@@ -124,7 +124,7 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver() {
|
||||
diagnostic = ConeVisibilityError(symbol)
|
||||
}
|
||||
|
||||
val deprecation = symbol.getDeprecation(session.languageVersionSettings.apiVersion, useSiteFile)
|
||||
val deprecation = symbol.getDeprecation(session, useSiteFile)
|
||||
if (deprecation != null && deprecation.deprecationLevel == DeprecationLevelValue.HIDDEN) {
|
||||
symbolApplicability = minOf(CandidateApplicability.HIDDEN, symbolApplicability)
|
||||
diagnostic = null
|
||||
|
||||
Reference in New Issue
Block a user