Analysis API: add annotations to KtTypeAliasSymbol

This commit is contained in:
Ilya Kirillov
2021-11-19 15:43:32 +01:00
parent 22cbcfb3c4
commit fff8eb244c
3 changed files with 12 additions and 2 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.analysis.api.fir.symbols package org.jetbrains.kotlin.analysis.api.fir.symbols
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase 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.api.fir.findPsi
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirModuleResolveState 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.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.firRef
import org.jetbrains.kotlin.analysis.api.fir.utils.weakRef import org.jetbrains.kotlin.analysis.api.fir.utils.weakRef
import org.jetbrains.kotlin.analysis.api.symbols.KtTypeAliasSymbol 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.symbols.pointers.KtSymbolPointer
import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken import org.jetbrains.kotlin.analysis.api.tokens.ValidityToken
import org.jetbrains.kotlin.analysis.api.types.KtType 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.ClassId
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
internal class KtFirTypeAliasSymbol( internal class KtFirTypeAliasSymbol(
fir: FirTypeAlias, fir: FirTypeAlias,
resolveState: FirModuleResolveState, private val resolveState: FirModuleResolveState,
override val token: ValidityToken, override val token: ValidityToken,
private val builder: KtSymbolByFirBuilder, private val builder: KtSymbolByFirBuilder,
) : KtTypeAliasSymbol(), KtFirSymbol<FirTypeAlias> { ) : KtTypeAliasSymbol(), KtFirSymbol<FirTypeAlias> {
@@ -53,6 +57,10 @@ internal class KtFirTypeAliasSymbol(
builder.typeBuilder.buildKtType(fir.expandedTypeRef) builder.typeBuilder.buildKtType(fir.expandedTypeRef)
} }
override val annotationsList: KtAnnotationsList by cached {
KtFirAnnotationListForDeclaration.create(firRef, resolveState.rootModuleSession, token)
}
override fun createPointer(): KtSymbolPointer<KtTypeAliasSymbol> { override fun createPointer(): KtSymbolPointer<KtTypeAliasSymbol> {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it } KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
TODO("Creating symbols for library typealiases is not supported yet") TODO("Creating symbols for library typealiases is not supported yet")
@@ -35,7 +35,8 @@ public sealed class KtClassLikeSymbol : KtClassifierSymbol(), KtSymbolWithKind {
public abstract class KtTypeAliasSymbol : KtClassLikeSymbol(), public abstract class KtTypeAliasSymbol : KtClassLikeSymbol(),
KtSymbolWithTypeParameters, KtSymbolWithTypeParameters,
KtSymbolWithVisibility, KtSymbolWithVisibility,
KtNamedSymbol { KtNamedSymbol,
KtAnnotatedSymbol {
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.TOP_LEVEL final override val symbolKind: KtSymbolKind get() = KtSymbolKind.TOP_LEVEL
/** /**
@@ -42,6 +42,7 @@ KtTypeParameterSymbol:
deprecationStatus: null deprecationStatus: null
KtTypeAliasSymbol: KtTypeAliasSymbol:
annotationsList: []
classIdIfNonLocal: Y classIdIfNonLocal: Y
expandedType: X<Z> expandedType: X<Z>
name: Y name: Y