[FIR] Rename FirAnnotation.classId to unexpandedClassId

This makes the eye catch each such thing in the source.
OptIn isn't that catchy, plus it may be declared
for the whole file, so noticing may be harder
This commit is contained in:
Nikolay Lunyak
2023-01-10 20:46:48 +02:00
committed by Space Team
parent cf73d59e29
commit 0c86294ca4
5 changed files with 9 additions and 9 deletions
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.hasAnnotation import org.jetbrains.kotlin.fir.declarations.hasAnnotation
import org.jetbrains.kotlin.fir.declarations.utils.isExtension import org.jetbrains.kotlin.fir.declarations.utils.isExtension
import org.jetbrains.kotlin.fir.declarations.utils.visibility import org.jetbrains.kotlin.fir.declarations.utils.visibility
import org.jetbrains.kotlin.fir.expressions.classId import org.jetbrains.kotlin.fir.expressions.unexpandedClassId
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.JsStandardClassIds import org.jetbrains.kotlin.name.JsStandardClassIds
@@ -27,7 +27,7 @@ internal abstract class FirJsAbstractNativeAnnotationChecker(private val require
protected fun FirFunction.hasRequiredAnnotation(context: CheckerContext) = hasAnnotation(requiredAnnotation, context.session) protected fun FirFunction.hasRequiredAnnotation(context: CheckerContext) = hasAnnotation(requiredAnnotation, context.session)
override fun check(declaration: FirSimpleFunction, context: CheckerContext, reporter: DiagnosticReporter) { override fun check(declaration: FirSimpleFunction, context: CheckerContext, reporter: DiagnosticReporter) {
val annotation = declaration.annotations.find { it.classId == requiredAnnotation } ?: return val annotation = declaration.annotations.find { it.unexpandedClassId == requiredAnnotation } ?: return
val isMember = !context.isTopLevel && declaration.visibility != Visibilities.Local val isMember = !context.isTopLevel && declaration.visibility != Visibilities.Local
val isExtension = declaration.isExtension val isExtension = declaration.isExtension
@@ -47,7 +47,7 @@ object FirRepeatableAnnotationChecker : FirBasicDeclarationChecker() {
val session = context.session val session = context.session
for (annotation in annotations) { for (annotation in annotations) {
val unexpandedClassId = annotation.classId ?: continue val unexpandedClassId = annotation.unexpandedClassId ?: continue
val annotationClassId = annotation.toAnnotationClassId(session) ?: continue val annotationClassId = annotation.toAnnotationClassId(session) ?: continue
if (annotationClassId.isLocal) continue if (annotationClassId.isLocal) continue
val annotationClass = session.symbolProvider.getClassLikeSymbolByClassId(annotationClassId) ?: continue val annotationClass = session.symbolProvider.getClassLikeSymbolByClassId(annotationClassId) ?: continue
@@ -87,7 +87,7 @@ object FirRepeatableAnnotationChecker : FirBasicDeclarationChecker() {
} }
if (declaration is FirRegularClass) { if (declaration is FirRegularClass) {
val javaRepeatable = annotations.find { it.classId == StandardClassIds.Annotations.Java.Repeatable } val javaRepeatable = annotations.find { it.unexpandedClassId == StandardClassIds.Annotations.Java.Repeatable }
if (javaRepeatable != null) { if (javaRepeatable != null) {
checkJavaRepeatableAnnotationDeclaration(javaRepeatable, declaration, context, reporter) checkJavaRepeatableAnnotationDeclaration(javaRepeatable, declaration, context, reporter)
} else { } else {
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.modality
import org.jetbrains.kotlin.fir.declarations.utils.visibility import org.jetbrains.kotlin.fir.declarations.utils.visibility
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirConstExpression import org.jetbrains.kotlin.fir.expressions.FirConstExpression
import org.jetbrains.kotlin.fir.expressions.classId import org.jetbrains.kotlin.fir.expressions.unexpandedClassId
import org.jetbrains.kotlin.fir.java.FirJavaTypeConversionMode import org.jetbrains.kotlin.fir.java.FirJavaTypeConversionMode
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
import org.jetbrains.kotlin.fir.java.declarations.* import org.jetbrains.kotlin.fir.java.declarations.*
@@ -466,7 +466,7 @@ class FirSignatureEnhancement(
private fun getPurelyImplementedSupertype(session: FirSession): ConeKotlinType? { private fun getPurelyImplementedSupertype(session: FirSession): ConeKotlinType? {
val purelyImplementedClassIdFromAnnotation = owner.annotations val purelyImplementedClassIdFromAnnotation = owner.annotations
.firstOrNull { it.classId?.asSingleFqName() == JvmAnnotationNames.PURELY_IMPLEMENTS_ANNOTATION } .firstOrNull { it.unexpandedClassId?.asSingleFqName() == JvmAnnotationNames.PURELY_IMPLEMENTS_ANNOTATION }
?.let { (it.argumentMapping.mapping.values.firstOrNull() as? FirConstExpression<*>) } ?.let { (it.argumentMapping.mapping.values.firstOrNull() as? FirConstExpression<*>) }
?.let { it.value as? String } ?.let { it.value as? String }
?.takeIf { it.isNotBlank() && isValidJavaFqName(it) } ?.takeIf { it.isNotBlank() && isValidJavaFqName(it) }
@@ -190,12 +190,12 @@ private fun List<FirAnnotation>.extractDeprecationAnnotationInfoPerUseSite(
return buildDeprecationAnnotationInfoPerUseSiteStorage { return buildDeprecationAnnotationInfoPerUseSiteStorage {
for ((deprecated, fromJavaAnnotation) in annotations) { for ((deprecated, fromJavaAnnotation) in annotations) {
if (deprecated.classId == StandardClassIds.Annotations.SinceKotlin) { if (deprecated.unexpandedClassId == StandardClassIds.Annotations.SinceKotlin) {
val sinceKotlinSingleArgument = deprecated.findArgumentByName(ParameterNames.sinceKotlinVersion) val sinceKotlinSingleArgument = deprecated.findArgumentByName(ParameterNames.sinceKotlinVersion)
val apiVersion = ((sinceKotlinSingleArgument as? FirConstExpression<*>)?.value as? String) val apiVersion = ((sinceKotlinSingleArgument as? FirConstExpression<*>)?.value as? String)
?.let(ApiVersion.Companion::parse) ?: continue ?.let(ApiVersion.Companion::parse) ?: continue
val wasExperimental = this@extractDeprecationAnnotationInfoPerUseSite.any { val wasExperimental = this@extractDeprecationAnnotationInfoPerUseSite.any {
it.classId == StandardClassIds.Annotations.WasExperimental it.unexpandedClassId == StandardClassIds.Annotations.WasExperimental
} }
if (!wasExperimental) { if (!wasExperimental) {
add(deprecated.useSiteTarget, SinceKotlinInfo(apiVersion)) add(deprecated.useSiteTarget, SinceKotlinInfo(apiVersion))
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.types.ConstantValueKind
inline val FirAnnotation.coneClassLikeType: ConeClassLikeType? inline val FirAnnotation.coneClassLikeType: ConeClassLikeType?
get() = ((annotationTypeRef as? FirResolvedTypeRef)?.type as? ConeClassLikeType) get() = ((annotationTypeRef as? FirResolvedTypeRef)?.type as? ConeClassLikeType)
inline val FirAnnotation.classId: ClassId? inline val FirAnnotation.unexpandedClassId: ClassId?
get() = coneClassLikeType?.lookupTag?.classId get() = coneClassLikeType?.lookupTag?.classId
fun <T> buildConstOrErrorExpression(source: KtSourceElement?, kind: ConstantValueKind<T>, value: T?, diagnostic: ConeDiagnostic): FirExpression = fun <T> buildConstOrErrorExpression(source: KtSourceElement?, kind: ConstantValueKind<T>, value: T?, diagnostic: ConeDiagnostic): FirExpression =