From 67d8346f5c1a05d0df21be4630b2b8d3d44212ca Mon Sep 17 00:00:00 2001 From: "Anastasia.Nekrasova" Date: Thu, 20 Jul 2023 14:21:56 +0300 Subject: [PATCH] Added a public function that allows to get the actual annotation target list The logic to get the actual target is required on the IDE side, see KTIJ-26302 --- .../kotlin/analysis/api/fir/utils/ktSymbolUtils.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt index 8364632c91e..a6075069a7c 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/utils/ktSymbolUtils.kt @@ -10,6 +10,9 @@ import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData import org.jetbrains.kotlin.analysis.project.structure.KtModule +import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget +import org.jetbrains.kotlin.fir.FirAnnotationContainer +import org.jetbrains.kotlin.fir.analysis.checkers.getActualTargetList import org.jetbrains.kotlin.fir.dispatchReceiverClassLookupTagOrNull import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol @@ -49,3 +52,8 @@ fun KtSymbol.getContainingKtModule(firResolveSession: LLFirResolveSession): KtMo is KtReceiverParameterSymbol -> owningCallableSymbol.getContainingKtModule(firResolveSession) else -> TODO("${this::class}") } + +fun KtSymbol.getActualAnnotationTargets(): List? { + val firSymbol = this.firSymbol.fir as? FirAnnotationContainer ?: return null + return getActualTargetList(firSymbol).defaultTargets +} \ No newline at end of file