diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/Kt1DescUtils.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/Kt1DescUtils.kt index 88b37ee8fd7..a877ae8bce8 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/Kt1DescUtils.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/Kt1DescUtils.kt @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtAnnotationEntry +import org.jetbrains.kotlin.psi.KtCallElement import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.resolve.DescriptorUtils @@ -453,7 +454,7 @@ internal fun createKtInitializerValue( internal fun AnnotationDescriptor.toKtAnnotationApplication(): KtAnnotationApplication { return KtAnnotationApplication( annotationClass?.maybeLocalClassId, - (source as? PsiSourceElement)?.psi as? KtAnnotationEntry, + (source as? PsiSourceElement)?.psi as? KtCallElement, (this as? LazyAnnotationDescriptor)?.annotationEntry?.useSiteTarget?.getAnnotationUseSiteTarget(), getKtNamedAnnotationArguments(), ) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt index 80c1fa75477..834b66b23f6 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/FirUtils.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirImplicitInvokeCall import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.psi.KtAnnotationEntry +import org.jetbrains.kotlin.psi.KtCallElement import org.jetbrains.kotlin.util.OperatorNameConventions /** @@ -76,7 +77,7 @@ internal fun ConeDiagnostic.getCandidateSymbols(): Collection> internal fun FirAnnotation.toKtAnnotationApplication(useSiteSession: FirSession): KtAnnotationApplication { return KtAnnotationApplication( fullyExpandedClassId(useSiteSession), - psi as? KtAnnotationEntry, + psi as? KtCallElement, useSiteTarget, FirAnnotationValueConverter.toNamedConstantValue( mapAnnotationParameters(this, useSiteSession), diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt index 772b32598c7..24ca661b679 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt @@ -108,7 +108,7 @@ internal object FirAnnotationValueConverter { KtAnnotationApplicationValue( KtAnnotationApplication( resolvedSymbol.callableId.classId, - psi as? KtAnnotationEntry, + psi as? KtCallElement, useSiteTarget = null, toNamedConstantValue(resultMap, session), ) diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/annotations/KtAnnotationApplication.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/annotations/KtAnnotationApplication.kt index 1def5e8c473..5064817166b 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/annotations/KtAnnotationApplication.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/annotations/KtAnnotationApplication.kt @@ -29,7 +29,7 @@ public data class KtAnnotationApplication( * * Present only for declarations from sources. For declarations from other places (libraries, stdlib) it's `null` */ - public val psi: KtAnnotationEntry?, + public val psi: KtCallElement?, /** * [AnnotationUseSiteTarget] to which annotation was applied. May be not-null only for annotation applications for declarations. diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/annotations/KtAnnotationValue.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/annotations/KtAnnotationValue.kt index 193cf0e80d3..002a210abd3 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/annotations/KtAnnotationValue.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/annotations/KtAnnotationValue.kt @@ -26,15 +26,17 @@ import org.jetbrains.kotlin.psi.KtElement * [KtAnnotationApplicationValue] represents annotation types (with annotation fq name and arguments); and * [KtArrayAnnotationValue] abstracts an array of [KtAnnotationValue]s. */ -public sealed class KtAnnotationValue( - public open val sourcePsi: KtElement? = null -) +public sealed class KtAnnotationValue { + public abstract val sourcePsi: KtElement? +} /** * This represents an unsupported expression used as an annotation value. */ -public object KtUnsupportedAnnotationValue : KtAnnotationValue() +public object KtUnsupportedAnnotationValue : KtAnnotationValue() { + override val sourcePsi: KtElement? get() = null +} /** * Array of annotation values. E.g: `@A([1, 2])` @@ -116,7 +118,9 @@ public class KtEnumEntryAnnotationValue( */ public class KtConstantAnnotationValue( public val constantValue: KtConstantValue, -) : KtAnnotationValue() +) : KtAnnotationValue() { + override val sourcePsi: KtElement? get() = constantValue.sourcePsi +} /**