K2: simplify getOwnSinceKotlin version
Related to KT-59824, KT-59825
This commit is contained in:
committed by
Space Team
parent
a2dc4f155f
commit
9279aab97f
+7
-41
@@ -11,14 +11,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||||
import org.jetbrains.kotlin.fir.languageVersionSettings
|
import org.jetbrains.kotlin.fir.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
|
||||||
import org.jetbrains.kotlin.fir.types.coneType
|
|
||||||
import org.jetbrains.kotlin.name.StandardClassIds
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
import org.jetbrains.kotlin.resolve.checkers.OptInNames
|
import org.jetbrains.kotlin.resolve.checkers.OptInNames
|
||||||
|
|
||||||
@@ -60,40 +53,13 @@ fun FirDeclaration.checkSinceKotlinVersionAccessibility(context: CheckerContext)
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun FirDeclaration.getOwnSinceKotlinVersion(session: FirSession): FirSinceKotlinValue? {
|
private fun FirDeclaration.getOwnSinceKotlinVersion(session: FirSession): FirSinceKotlinValue? {
|
||||||
var result: FirSinceKotlinValue? = null
|
val sinceKotlinSingleArgument = getAnnotationByClassId(StandardClassIds.Annotations.SinceKotlin, session)?.findArgumentByName(
|
||||||
|
StandardClassIds.Annotations.ParameterNames.sinceKotlinVersion
|
||||||
fun FirDeclaration.consider() {
|
)
|
||||||
val sinceKotlinSingleArgument = getAnnotationByClassId(StandardClassIds.Annotations.SinceKotlin, session)?.findArgumentByName(
|
val apiVersion = ((sinceKotlinSingleArgument as? FirConstExpression<*>)?.value as? String)?.let(ApiVersion.Companion::parse)
|
||||||
StandardClassIds.Annotations.ParameterNames.sinceKotlinVersion
|
return if (apiVersion != null) {
|
||||||
)
|
FirSinceKotlinValue(apiVersion, loadWasExperimentalMarkerClasses(session))
|
||||||
val apiVersion = ((sinceKotlinSingleArgument as? FirConstExpression<*>)?.value as? String)?.let(ApiVersion.Companion::parse)
|
} else null
|
||||||
if (apiVersion != null) {
|
|
||||||
if (result == null || apiVersion > result!!.apiVersion) {
|
|
||||||
result = FirSinceKotlinValue(apiVersion, loadWasExperimentalMarkerClasses(session))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun FirClassLikeSymbol<*>.consider() {
|
|
||||||
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
|
||||||
@OptIn(SymbolInternals::class)
|
|
||||||
this.fir.consider()
|
|
||||||
}
|
|
||||||
|
|
||||||
this.consider()
|
|
||||||
if (this is FirConstructor) {
|
|
||||||
val classId = symbol.callableId.classId
|
|
||||||
if (classId != null) {
|
|
||||||
val classSymbol = session.symbolProvider.getClassLikeSymbolByClassId(classId)
|
|
||||||
classSymbol?.consider()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this is FirTypeAlias) {
|
|
||||||
(this.expandedTypeRef.coneType as? ConeClassLikeType)?.lookupTag?.toSymbol(session)?.consider()
|
|
||||||
}
|
|
||||||
|
|
||||||
return result
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirDeclaration.loadWasExperimentalMarkerClasses(session: FirSession): List<FirRegularClassSymbol> {
|
private fun FirDeclaration.loadWasExperimentalMarkerClasses(session: FirSession): List<FirRegularClassSymbol> {
|
||||||
|
|||||||
Reference in New Issue
Block a user