HL API: Add type parameters and visibility to KtTypeAliasSymbol.

This commit is contained in:
Mark Punzalan
2021-08-28 07:07:46 +00:00
committed by Ilya Kirillov
parent c2529a4abb
commit 50508da156
4 changed files with 25 additions and 2 deletions
@@ -32,7 +32,10 @@ public sealed class KtClassLikeSymbol : KtClassifierSymbol(), KtSymbolWithKind {
abstract override fun createPointer(): KtSymbolPointer<KtClassLikeSymbol>
}
public abstract class KtTypeAliasSymbol : KtClassLikeSymbol(), KtNamedSymbol {
public abstract class KtTypeAliasSymbol : KtClassLikeSymbol(),
KtSymbolWithTypeParameters,
KtSymbolWithVisibility,
KtNamedSymbol {
final override val symbolKind: KtSymbolKind get() = KtSymbolKind.TOP_LEVEL
/**
@@ -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<FirTypeParameter>().map { typeParameter ->
builder.classifierBuilder.buildTypeParameterSymbol(typeParameter.symbol.fir)
}
}
override val expandedType: KtType by firRef.withFirAndCache(FirResolvePhase.SUPER_TYPES) { fir ->
builder.typeBuilder.buildKtType(fir.expandedTypeRef)
}
@@ -1,3 +1,3 @@
class X<T>
typealias Y<Z> = X<Z>
private typealias Y<Z> = X<Z>
@@ -48,4 +48,8 @@ KtFirTypeAliasSymbol:
name: Y
origin: SOURCE
symbolKind: TOP_LEVEL
typeParameters: [
KtFirTypeParameterSymbol(Z)
]
visibility: Private
deprecationStatus: null