[AA] introduce KtAnnotationApplication
^KT-56046
This commit is contained in:
committed by
Space Team
parent
59f07c2197
commit
6e25b45f7d
@@ -5,8 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationOverview
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplicationInfo
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplicationWithArgumentsInfo
|
||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.mapAnnotationParameters
|
||||
import org.jetbrains.kotlin.analysis.api.fir.evaluate.FirAnnotationValueConverter
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||
@@ -71,7 +71,7 @@ internal fun ConeDiagnostic.getCandidateSymbols(): Collection<FirBasedSymbol<*>>
|
||||
internal fun FirAnnotation.toKtAnnotationApplication(
|
||||
useSiteSession: FirSession,
|
||||
index: Int,
|
||||
): KtAnnotationApplication = KtAnnotationApplication(
|
||||
): KtAnnotationApplicationWithArgumentsInfo = KtAnnotationApplicationWithArgumentsInfo(
|
||||
classId = toAnnotationClassId(useSiteSession),
|
||||
psi = psi as? KtCallElement,
|
||||
useSiteTarget = useSiteTarget,
|
||||
@@ -82,10 +82,13 @@ internal fun FirAnnotation.toKtAnnotationApplication(
|
||||
index = index,
|
||||
)
|
||||
|
||||
internal fun FirAnnotation.toKtAnnotationOverview(useSiteSession: FirSession, index: Int): KtAnnotationOverview = KtAnnotationOverview(
|
||||
internal fun FirAnnotation.toKtAnnotationInfo(
|
||||
useSiteSession: FirSession,
|
||||
index: Int,
|
||||
): KtAnnotationApplicationInfo = KtAnnotationApplicationInfo(
|
||||
classId = toAnnotationClassId(useSiteSession),
|
||||
psi = psi as? KtCallElement,
|
||||
useSiteTarget = useSiteTarget,
|
||||
hasArguments = this is FirAnnotationCall && arguments.isNotEmpty(),
|
||||
isCallWithArguments = this is FirAnnotationCall && arguments.isNotEmpty(),
|
||||
index = index,
|
||||
)
|
||||
|
||||
+6
-6
@@ -5,8 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir.annotations
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationOverview
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplicationInfo
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplicationWithArgumentsInfo
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KtEmptyAnnotationsList
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||
@@ -21,14 +21,14 @@ internal class KtFirAnnotationListForDeclaration private constructor(
|
||||
private val useSiteSession: FirSession,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtAnnotationsList() {
|
||||
override val annotations: List<KtAnnotationApplication>
|
||||
override val annotations: List<KtAnnotationApplicationWithArgumentsInfo>
|
||||
get() = withValidityAssertion {
|
||||
annotations(firSymbol, useSiteSession)
|
||||
}
|
||||
|
||||
override val annotationOverviews: List<KtAnnotationOverview>
|
||||
override val annotationInfos: List<KtAnnotationApplicationInfo>
|
||||
get() = withValidityAssertion {
|
||||
annotationOverviews(firSymbol, useSiteSession)
|
||||
annotationInfos(firSymbol, useSiteSession)
|
||||
}
|
||||
|
||||
override fun hasAnnotation(
|
||||
@@ -43,7 +43,7 @@ internal class KtFirAnnotationListForDeclaration private constructor(
|
||||
hasAnnotation(firSymbol, classId, useSiteSession)
|
||||
}
|
||||
|
||||
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
||||
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplicationWithArgumentsInfo> = withValidityAssertion {
|
||||
annotationsByClassId(firSymbol, classId, useSiteSession)
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -5,8 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir.annotations
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationOverview
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplicationInfo
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplicationWithArgumentsInfo
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KtEmptyAnnotationsList
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||
@@ -23,14 +23,14 @@ internal class KtFirAnnotationListForReceiverParameter private constructor(
|
||||
private val useSiteSession: FirSession,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtAnnotationsList() {
|
||||
override val annotations: List<KtAnnotationApplication>
|
||||
override val annotations: List<KtAnnotationApplicationWithArgumentsInfo>
|
||||
get() = withValidityAssertion {
|
||||
annotations(firCallableSymbol, useSiteSession, receiverParameter)
|
||||
}
|
||||
|
||||
override val annotationOverviews: List<KtAnnotationOverview>
|
||||
override val annotationInfos: List<KtAnnotationApplicationInfo>
|
||||
get() = withValidityAssertion {
|
||||
annotationOverviews(firCallableSymbol, useSiteSession, receiverParameter)
|
||||
annotationInfos(firCallableSymbol, useSiteSession, receiverParameter)
|
||||
}
|
||||
|
||||
override fun hasAnnotation(
|
||||
@@ -45,7 +45,7 @@ internal class KtFirAnnotationListForReceiverParameter private constructor(
|
||||
hasAnnotation(firCallableSymbol, classId, useSiteSession, receiverParameter)
|
||||
}
|
||||
|
||||
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
||||
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplicationWithArgumentsInfo> = withValidityAssertion {
|
||||
annotationsByClassId(firCallableSymbol, classId, useSiteSession, receiverParameter)
|
||||
}
|
||||
|
||||
|
||||
+7
-7
@@ -5,11 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir.annotations
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationOverview
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplicationInfo
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplicationWithArgumentsInfo
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
|
||||
import org.jetbrains.kotlin.analysis.api.fir.toKtAnnotationApplication
|
||||
import org.jetbrains.kotlin.analysis.api.fir.toKtAnnotationOverview
|
||||
import org.jetbrains.kotlin.analysis.api.fir.toKtAnnotationInfo
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KtEmptyAnnotationsList
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
@@ -31,17 +31,17 @@ internal class KtFirAnnotationListForType private constructor(
|
||||
private val useSiteSession: FirSession,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtAnnotationsList() {
|
||||
override val annotations: List<KtAnnotationApplication>
|
||||
override val annotations: List<KtAnnotationApplicationWithArgumentsInfo>
|
||||
get() = withValidityAssertion {
|
||||
coneType.customAnnotationsWithLazyResolve(FirResolvePhase.ANNOTATIONS_ARGUMENTS_MAPPING).mapIndexed { index, annotation ->
|
||||
annotation.toKtAnnotationApplication(useSiteSession, index)
|
||||
}
|
||||
}
|
||||
|
||||
override val annotationOverviews: List<KtAnnotationOverview>
|
||||
override val annotationInfos: List<KtAnnotationApplicationInfo>
|
||||
get() = withValidityAssertion {
|
||||
coneType.customAnnotationsWithLazyResolve(FirResolvePhase.TYPES).mapIndexed { index, annotation ->
|
||||
annotation.toKtAnnotationOverview(useSiteSession, index)
|
||||
annotation.toKtAnnotationInfo(useSiteSession, index)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ internal class KtFirAnnotationListForType private constructor(
|
||||
coneType.customAnnotationsWithLazyResolve(FirResolvePhase.TYPES).hasAnnotation(classId, useSiteSession)
|
||||
}
|
||||
|
||||
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
||||
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplicationWithArgumentsInfo> = withValidityAssertion {
|
||||
coneType.customAnnotationsWithLazyResolve(FirResolvePhase.ANNOTATIONS_ARGUMENTS_MAPPING).mapIndexedNotNull { index, annotation ->
|
||||
if (annotation.toAnnotationClassId(useSiteSession) != classId) return@mapIndexedNotNull null
|
||||
annotation.toKtAnnotationApplication(useSiteSession, index)
|
||||
|
||||
+11
-10
@@ -5,10 +5,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir.annotations
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationOverview
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplicationInfo
|
||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplicationWithArgumentsInfo
|
||||
import org.jetbrains.kotlin.analysis.api.fir.toKtAnnotationApplication
|
||||
import org.jetbrains.kotlin.analysis.api.fir.toKtAnnotationOverview
|
||||
import org.jetbrains.kotlin.analysis.api.fir.toKtAnnotationInfo
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry
|
||||
import org.jetbrains.kotlin.analysis.utils.errors.checkWithAttachmentBuilder
|
||||
import org.jetbrains.kotlin.analysis.utils.errors.withClassEntry
|
||||
@@ -45,7 +45,7 @@ internal fun annotationsByClassId(
|
||||
classId: ClassId,
|
||||
useSiteSession: FirSession,
|
||||
annotationContainer: FirAnnotationContainer = firSymbol.fir,
|
||||
): List<KtAnnotationApplication> =
|
||||
): List<KtAnnotationApplicationWithArgumentsInfo> =
|
||||
if (firSymbol.isFromCompilerRequiredAnnotationsPhase(classId)) {
|
||||
annotationContainer.resolvedCompilerRequiredAnnotations(firSymbol).mapIndexedNotNull { index, annotation ->
|
||||
if (annotation.toAnnotationClassIdSafe(useSiteSession) != classId) return@mapIndexedNotNull null
|
||||
@@ -62,16 +62,17 @@ internal fun annotations(
|
||||
firSymbol: FirBasedSymbol<*>,
|
||||
useSiteSession: FirSession,
|
||||
annotationContainer: FirAnnotationContainer = firSymbol.fir,
|
||||
): List<KtAnnotationApplication> = annotationContainer.resolvedAnnotationsWithArguments(firSymbol).mapIndexed { index, annotation ->
|
||||
annotation.toKtAnnotationApplication(useSiteSession, index)
|
||||
}
|
||||
): List<KtAnnotationApplicationWithArgumentsInfo> =
|
||||
annotationContainer.resolvedAnnotationsWithArguments(firSymbol).mapIndexed { index, annotation ->
|
||||
annotation.toKtAnnotationApplication(useSiteSession, index)
|
||||
}
|
||||
|
||||
internal fun annotationOverviews(
|
||||
internal fun annotationInfos(
|
||||
firSymbol: FirBasedSymbol<*>,
|
||||
useSiteSession: FirSession,
|
||||
annotationContainer: FirAnnotationContainer = firSymbol.fir,
|
||||
): List<KtAnnotationOverview> = annotationContainer.resolvedAnnotationsWithClassIds(firSymbol).mapIndexed { index, annotation ->
|
||||
annotation.toKtAnnotationOverview(useSiteSession, index)
|
||||
): List<KtAnnotationApplicationInfo> = annotationContainer.resolvedAnnotationsWithClassIds(firSymbol).mapIndexed { index, annotation ->
|
||||
annotation.toKtAnnotationInfo(useSiteSession, index)
|
||||
}
|
||||
|
||||
internal fun annotationClassIds(
|
||||
|
||||
+1
-1
@@ -112,7 +112,7 @@ internal object FirAnnotationValueConverter {
|
||||
}
|
||||
|
||||
KtAnnotationApplicationValue(
|
||||
KtAnnotationApplication(
|
||||
KtAnnotationApplicationWithArgumentsInfo(
|
||||
resolvedSymbol.callableId.classId,
|
||||
psi as? KtCallElement,
|
||||
useSiteTarget = null,
|
||||
|
||||
Reference in New Issue
Block a user