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
This commit is contained in:
Anastasia.Nekrasova
2023-07-20 14:21:56 +03:00
committed by Space Team
parent 42ebbb937c
commit 67d8346f5c
@@ -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<KotlinTarget>? {
val firSymbol = this.firSymbol.fir as? FirAnnotationContainer ?: return null
return getActualTargetList(firSymbol).defaultTargets
}