HL API: Add type parameters and visibility to KtTypeAliasSymbol.
This commit is contained in:
committed by
Ilya Kirillov
parent
c2529a4abb
commit
50508da156
+4
-1
@@ -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
|
||||
|
||||
/**
|
||||
|
||||
+16
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user