From 50508da1564832612f7113306d3e811f2d80687b Mon Sep 17 00:00:00 2001 From: Mark Punzalan Date: Sat, 28 Aug 2021 07:07:46 +0000 Subject: [PATCH] HL API: Add type parameters and visibility to KtTypeAliasSymbol. --- .../frontend/api/symbols/KtClassLikeSymbol.kt | 5 ++++- .../api/fir/symbols/KtFirTypeAliasSymbol.kt | 16 ++++++++++++++++ .../testData/symbols/symbolByPsi/typeAlias.kt | 2 +- .../testData/symbols/symbolByPsi/typeAlias.txt | 4 ++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtClassLikeSymbol.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtClassLikeSymbol.kt index 438fadcd32d..85dd8f9b7c3 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtClassLikeSymbol.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtClassLikeSymbol.kt @@ -32,7 +32,10 @@ public sealed class KtClassLikeSymbol : KtClassifierSymbol(), KtSymbolWithKind { abstract override fun createPointer(): KtSymbolPointer } -public abstract class KtTypeAliasSymbol : KtClassLikeSymbol(), KtNamedSymbol { +public abstract class KtTypeAliasSymbol : KtClassLikeSymbol(), + KtSymbolWithTypeParameters, + KtSymbolWithVisibility, + KtNamedSymbol { final override val symbolKind: KtSymbolKind get() = KtSymbolKind.TOP_LEVEL /** diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAliasSymbol.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAliasSymbol.kt index 03901340501..871585c3929 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAliasSymbol.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/KtFirTypeAliasSymbol.kt @@ -6,8 +6,12 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.descriptors.Visibilities +import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirTypeAlias +import org.jetbrains.kotlin.fir.declarations.FirTypeParameter +import org.jetbrains.kotlin.fir.declarations.utils.isLocal import org.jetbrains.kotlin.idea.fir.findPsi import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder @@ -34,6 +38,18 @@ internal class KtFirTypeAliasSymbol( override val name: Name get() = firRef.withFir { it.name } override val classIdIfNonLocal: ClassId get() = firRef.withFir { it.symbol.classId } + override val visibility: Visibility + get() = when (val possiblyRawVisibility = getVisibility(FirResolvePhase.RAW_FIR)) { + Visibilities.Unknown -> Visibilities.Public + else -> possiblyRawVisibility + } + + override val typeParameters by firRef.withFirAndCache { fir -> + fir.typeParameters.filterIsInstance().map { typeParameter -> + builder.classifierBuilder.buildTypeParameterSymbol(typeParameter.symbol.fir) + } + } + override val expandedType: KtType by firRef.withFirAndCache(FirResolvePhase.SUPER_TYPES) { fir -> builder.typeBuilder.buildKtType(fir.expandedTypeRef) } diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAlias.kt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAlias.kt index 3c470a88fb0..a95de1efccf 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAlias.kt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAlias.kt @@ -1,3 +1,3 @@ class X -typealias Y = X +private typealias Y = X diff --git a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAlias.txt b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAlias.txt index b003d058b6d..71d405acf4d 100644 --- a/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAlias.txt +++ b/idea/idea-frontend-fir/testData/symbols/symbolByPsi/typeAlias.txt @@ -48,4 +48,8 @@ KtFirTypeAliasSymbol: name: Y origin: SOURCE symbolKind: TOP_LEVEL + typeParameters: [ + KtFirTypeParameterSymbol(Z) + ] + visibility: Private deprecationStatus: null