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
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<FirTypeAlias> {
@@ -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<KtTypeAliasSymbol> {
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
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(),
KtSymbolWithTypeParameters,
KtSymbolWithVisibility,
KtNamedSymbol {
KtNamedSymbol,
KtAnnotatedSymbol {
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.TOP_LEVEL
/**
@@ -42,6 +42,7 @@ KtTypeParameterSymbol:
deprecationStatus: null
KtTypeAliasSymbol:
annotationsList: []
classIdIfNonLocal: Y
expandedType: X<Z>
name: Y