From fff8eb244ca8c9a5fecf1253067cae57f6839f32 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Fri, 19 Nov 2021 15:43:32 +0100 Subject: [PATCH] Analysis API: add annotations to KtTypeAliasSymbol --- .../analysis/api/fir/symbols/KtFirTypeAliasSymbol.kt | 10 +++++++++- .../kotlin/analysis/api/symbols/KtClassLikeSymbol.kt | 3 ++- .../testData/symbols/symbolByPsi/typeAlias.txt | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeAliasSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeAliasSymbol.kt index 152ab072b9b..7c4c88f961f 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeAliasSymbol.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KtFirTypeAliasSymbol.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.analysis.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.declarations.FirResolvePhase @@ -15,6 +16,8 @@ import org.jetbrains.kotlin.fir.declarations.utils.isLocal import org.jetbrains.kotlin.analysis.api.fir.findPsi import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirModuleResolveState import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder +import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration +import org.jetbrains.kotlin.analysis.api.fir.utils.cached import org.jetbrains.kotlin.analysis.api.fir.utils.firRef import org.jetbrains.kotlin.analysis.api.fir.utils.weakRef import org.jetbrains.kotlin.analysis.api.symbols.KtTypeAliasSymbol @@ -22,12 +25,13 @@ import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtPsiBasedSymbolPointe import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.analysis.api.types.KtType +import org.jetbrains.kotlin.analysis.api.withValidityAssertion import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name internal class KtFirTypeAliasSymbol( fir: FirTypeAlias, - resolveState: FirModuleResolveState, + private val resolveState: FirModuleResolveState, override val token: ValidityToken, private val builder: KtSymbolByFirBuilder, ) : KtTypeAliasSymbol(), KtFirSymbol { @@ -53,6 +57,10 @@ internal class KtFirTypeAliasSymbol( builder.typeBuilder.buildKtType(fir.expandedTypeRef) } + override val annotationsList: KtAnnotationsList by cached { + KtFirAnnotationListForDeclaration.create(firRef, resolveState.rootModuleSession, token) + } + override fun createPointer(): KtSymbolPointer { KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } TODO("Creating symbols for library typealiases is not supported yet") diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt index f6247b93652..69ac86a9329 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/KtClassLikeSymbol.kt @@ -35,7 +35,8 @@ public sealed class KtClassLikeSymbol : KtClassifierSymbol(), KtSymbolWithKind { public abstract class KtTypeAliasSymbol : KtClassLikeSymbol(), KtSymbolWithTypeParameters, KtSymbolWithVisibility, - KtNamedSymbol { + KtNamedSymbol, + KtAnnotatedSymbol { final override val symbolKind: KtSymbolKind get() = KtSymbolKind.TOP_LEVEL /** diff --git a/analysis/analysis-api/testData/symbols/symbolByPsi/typeAlias.txt b/analysis/analysis-api/testData/symbols/symbolByPsi/typeAlias.txt index 3411e5f0b44..2f4acd9a404 100644 --- a/analysis/analysis-api/testData/symbols/symbolByPsi/typeAlias.txt +++ b/analysis/analysis-api/testData/symbols/symbolByPsi/typeAlias.txt @@ -42,6 +42,7 @@ KtTypeParameterSymbol: deprecationStatus: null KtTypeAliasSymbol: + annotationsList: [] classIdIfNonLocal: Y expandedType: X name: Y