[FIR] Get rid of FirAnnotation.fullyExpandedClassId
It's duplicated by `toAnnotationClassId`.
This commit is contained in:
committed by
Space Team
parent
343b856cfc
commit
4cddbb5fc0
@@ -6,11 +6,11 @@
|
|||||||
package org.jetbrains.kotlin.analysis.api.fir
|
package org.jetbrains.kotlin.analysis.api.fir
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication
|
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication
|
||||||
import org.jetbrains.kotlin.fir.declarations.fullyExpandedClassId
|
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.mapAnnotationParameters
|
import org.jetbrains.kotlin.analysis.api.fir.annotations.mapAnnotationParameters
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.evaluate.FirAnnotationValueConverter
|
import org.jetbrains.kotlin.analysis.api.fir.evaluate.FirAnnotationValueConverter
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.psi
|
import org.jetbrains.kotlin.fir.psi
|
||||||
@@ -64,7 +64,7 @@ internal fun ConeDiagnostic.getCandidateSymbols(): Collection<FirBasedSymbol<*>>
|
|||||||
|
|
||||||
internal fun FirAnnotation.toKtAnnotationApplication(useSiteSession: FirSession): KtAnnotationApplication {
|
internal fun FirAnnotation.toKtAnnotationApplication(useSiteSession: FirSession): KtAnnotationApplication {
|
||||||
return KtAnnotationApplication(
|
return KtAnnotationApplication(
|
||||||
fullyExpandedClassId(useSiteSession),
|
toAnnotationClassId(useSiteSession),
|
||||||
psi as? KtCallElement,
|
psi as? KtCallElement,
|
||||||
useSiteTarget,
|
useSiteTarget,
|
||||||
FirAnnotationValueConverter.toNamedConstantValue(
|
FirAnnotationValueConverter.toNamedConstantValue(
|
||||||
|
|||||||
+5
-6
@@ -13,7 +13,8 @@ import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
|||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.fullyExpandedClassId
|
import org.jetbrains.kotlin.fir.declarations.hasAnnotation
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
|
||||||
@@ -37,19 +38,17 @@ internal class KtFirAnnotationListForDeclaration private constructor(
|
|||||||
): Boolean = withValidityAssertion {
|
): Boolean = withValidityAssertion {
|
||||||
firSymbol.resolvedAnnotationsWithClassIds.any {
|
firSymbol.resolvedAnnotationsWithClassIds.any {
|
||||||
(it.useSiteTarget == useSiteTarget || acceptAnnotationsWithoutUseSite && it.useSiteTarget == null) &&
|
(it.useSiteTarget == useSiteTarget || acceptAnnotationsWithoutUseSite && it.useSiteTarget == null) &&
|
||||||
it.fullyExpandedClassId(useSiteSession) == classId
|
it.toAnnotationClassId(useSiteSession) == classId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hasAnnotation(classId: ClassId): Boolean = withValidityAssertion {
|
override fun hasAnnotation(classId: ClassId): Boolean = withValidityAssertion {
|
||||||
firSymbol.resolvedAnnotationsWithClassIds.any {
|
firSymbol.resolvedAnnotationsWithClassIds.hasAnnotation(classId, useSiteSession)
|
||||||
it.fullyExpandedClassId(useSiteSession) == classId
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
||||||
firSymbol.resolvedAnnotationsWithArguments.mapNotNull { annotation ->
|
firSymbol.resolvedAnnotationsWithArguments.mapNotNull { annotation ->
|
||||||
if (annotation.fullyExpandedClassId(useSiteSession) != classId) return@mapNotNull null
|
if (annotation.toAnnotationClassId(useSiteSession) != classId) return@mapNotNull null
|
||||||
annotation.toKtAnnotationApplication(useSiteSession)
|
annotation.toKtAnnotationApplication(useSiteSession)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-6
@@ -14,7 +14,8 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
|||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.fullyExpandedClassId
|
import org.jetbrains.kotlin.fir.declarations.hasAnnotation
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.resolvedAnnotationClassIds
|
import org.jetbrains.kotlin.fir.symbols.resolvedAnnotationClassIds
|
||||||
import org.jetbrains.kotlin.fir.symbols.resolvedAnnotationsWithArguments
|
import org.jetbrains.kotlin.fir.symbols.resolvedAnnotationsWithArguments
|
||||||
@@ -42,19 +43,17 @@ internal class KtFirAnnotationListForReceiverParameter private constructor(
|
|||||||
): Boolean = withValidityAssertion {
|
): Boolean = withValidityAssertion {
|
||||||
receiverParameter.resolvedAnnotationsWithClassIds(firCallableSymbol).any {
|
receiverParameter.resolvedAnnotationsWithClassIds(firCallableSymbol).any {
|
||||||
(it.useSiteTarget == useSiteTarget || acceptAnnotationsWithoutUseSite && it.useSiteTarget == null) &&
|
(it.useSiteTarget == useSiteTarget || acceptAnnotationsWithoutUseSite && it.useSiteTarget == null) &&
|
||||||
it.fullyExpandedClassId(useSiteSession) == classId
|
it.toAnnotationClassId(useSiteSession) == classId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hasAnnotation(classId: ClassId): Boolean = withValidityAssertion {
|
override fun hasAnnotation(classId: ClassId): Boolean = withValidityAssertion {
|
||||||
receiverParameter.resolvedAnnotationsWithClassIds(firCallableSymbol).any {
|
receiverParameter.resolvedAnnotationsWithClassIds(firCallableSymbol).hasAnnotation(classId, useSiteSession)
|
||||||
it.fullyExpandedClassId(useSiteSession) == classId
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
||||||
receiverParameter.resolvedAnnotationsWithArguments(firCallableSymbol).mapNotNull { annotation ->
|
receiverParameter.resolvedAnnotationsWithArguments(firCallableSymbol).mapNotNull { annotation ->
|
||||||
if (annotation.fullyExpandedClassId(useSiteSession) != classId) return@mapNotNull null
|
if (annotation.toAnnotationClassId(useSiteSession) != classId) return@mapNotNull null
|
||||||
annotation.toKtAnnotationApplication(useSiteSession)
|
annotation.toKtAnnotationApplication(useSiteSession)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-7
@@ -13,7 +13,8 @@ import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
|||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.fullyExpandedClassId
|
import org.jetbrains.kotlin.fir.declarations.hasAnnotation
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.customAnnotations
|
import org.jetbrains.kotlin.fir.types.customAnnotations
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
@@ -33,25 +34,23 @@ internal class KtFirAnnotationListForType private constructor(
|
|||||||
): Boolean = withValidityAssertion {
|
): Boolean = withValidityAssertion {
|
||||||
coneType.customAnnotations.any {
|
coneType.customAnnotations.any {
|
||||||
(it.useSiteTarget == useSiteTarget || acceptAnnotationsWithoutUseSite && it.useSiteTarget == null) &&
|
(it.useSiteTarget == useSiteTarget || acceptAnnotationsWithoutUseSite && it.useSiteTarget == null) &&
|
||||||
it.fullyExpandedClassId(useSiteSession) == classId
|
it.toAnnotationClassId(useSiteSession) == classId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hasAnnotation(classId: ClassId): Boolean = withValidityAssertion {
|
override fun hasAnnotation(classId: ClassId): Boolean = withValidityAssertion {
|
||||||
coneType.customAnnotations.any {
|
coneType.customAnnotations.hasAnnotation(classId, useSiteSession)
|
||||||
it.fullyExpandedClassId(useSiteSession) == classId
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
||||||
coneType.customAnnotations.mapNotNull { annotation ->
|
coneType.customAnnotations.mapNotNull { annotation ->
|
||||||
if (annotation.fullyExpandedClassId(useSiteSession) != classId) return@mapNotNull null
|
if (annotation.toAnnotationClassId(useSiteSession) != classId) return@mapNotNull null
|
||||||
annotation.toKtAnnotationApplication(useSiteSession)
|
annotation.toKtAnnotationApplication(useSiteSession)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val annotationClassIds: Collection<ClassId>
|
override val annotationClassIds: Collection<ClassId>
|
||||||
get() = withValidityAssertion { coneType.customAnnotations.mapNotNull { it.fullyExpandedClassId(useSiteSession) } }
|
get() = withValidityAssertion { coneType.customAnnotations.mapNotNull { it.toAnnotationClassId(useSiteSession) } }
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun create(
|
fun create(
|
||||||
|
|||||||
+2
-2
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.analysis.js.checkers.isNativeObject
|
|||||||
import org.jetbrains.kotlin.fir.analysis.checkers.isTopLevel
|
import org.jetbrains.kotlin.fir.analysis.checkers.isTopLevel
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.fullyExpandedClassId
|
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
||||||
import org.jetbrains.kotlin.fir.types.coneType
|
import org.jetbrains.kotlin.fir.types.coneType
|
||||||
import org.jetbrains.kotlin.name.JsStandardClassIds
|
import org.jetbrains.kotlin.name.JsStandardClassIds
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ object FirJsExternalFileChecker : FirBasicDeclarationChecker() {
|
|||||||
|
|
||||||
val targetAnnotations = context.containingFile
|
val targetAnnotations = context.containingFile
|
||||||
?.annotations
|
?.annotations
|
||||||
?.firstOrNull { it.fullyExpandedClassId(context.session) in JsStandardClassIds.Annotations.annotationsRequiringExternal }
|
?.firstOrNull { it.toAnnotationClassId(context.session) in JsStandardClassIds.Annotations.annotationsRequiringExternal }
|
||||||
|
|
||||||
if (targetAnnotations != null) {
|
if (targetAnnotations != null) {
|
||||||
reporter.reportOn(
|
reporter.reportOn(
|
||||||
|
|||||||
+2
-4
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.diagnostics.reportOn
|
|||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirAnnotationCallChecker
|
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirAnnotationCallChecker
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.js.FirJsErrors
|
||||||
import org.jetbrains.kotlin.fir.declarations.fullyExpandedClassId
|
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||||
import org.jetbrains.kotlin.js.validateQualifier
|
import org.jetbrains.kotlin.js.validateQualifier
|
||||||
@@ -18,9 +18,7 @@ import org.jetbrains.kotlin.name.JsStandardClassIds.Annotations.JsQualifier
|
|||||||
|
|
||||||
object FirJsQualifierChecker : FirAnnotationCallChecker() {
|
object FirJsQualifierChecker : FirAnnotationCallChecker() {
|
||||||
override fun check(expression: FirAnnotationCall, context: CheckerContext, reporter: DiagnosticReporter) {
|
override fun check(expression: FirAnnotationCall, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
val annotationFqName = expression.fullyExpandedClassId(context.session)
|
if (expression.toAnnotationClassId(context.session) != JsQualifier) {
|
||||||
|
|
||||||
if (annotationFqName != JsQualifier) {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -233,6 +233,3 @@ fun hasLowPriorityAnnotation(annotations: List<FirAnnotation>) = annotations.any
|
|||||||
val lookupTag = it.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.lookupTag ?: return@any false
|
val lookupTag = it.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.lookupTag ?: return@any false
|
||||||
lookupTag.classId == LOW_PRIORITY_IN_OVERLOAD_RESOLUTION_CLASS_ID
|
lookupTag.classId == LOW_PRIORITY_IN_OVERLOAD_RESOLUTION_CLASS_ID
|
||||||
}
|
}
|
||||||
|
|
||||||
fun FirAnnotation.fullyExpandedClassId(useSiteSession: FirSession): ClassId? =
|
|
||||||
unexpandedConeClassLikeType?.fullyExpandedType(useSiteSession)?.classId
|
|
||||||
|
|||||||
Reference in New Issue
Block a user