[Analysis API] Provide API for getting KtTypeAliasSymbol by ClassId
This commit is contained in:
committed by
Space Team
parent
ca68ca753a
commit
af414cfb5e
+7
@@ -10,11 +10,13 @@ import org.jetbrains.kotlin.analysis.api.descriptors.components.base.Fe10KtAnaly
|
|||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.KtFe10FileSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.KtFe10FileSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.KtFe10PackageSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.KtFe10PackageSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtClassSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtClassSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtClassifierSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtSymbol
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.*
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.*
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||||
import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies
|
import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies
|
||||||
|
import org.jetbrains.kotlin.descriptors.findTypeAliasAcrossModuleDependencies
|
||||||
import org.jetbrains.kotlin.descriptors.isEmpty
|
import org.jetbrains.kotlin.descriptors.isEmpty
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -122,6 +124,11 @@ internal class KtFe10SymbolProvider(
|
|||||||
return descriptor.toKtClassSymbol(analysisContext)
|
return descriptor.toKtClassSymbol(analysisContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getTypeAliasByClassId(classId: ClassId): KtTypeAliasSymbol? {
|
||||||
|
val descriptor = analysisContext.resolveSession.moduleDescriptor.findTypeAliasAcrossModuleDependencies(classId) ?: return null
|
||||||
|
return descriptor.toKtClassifierSymbol(analysisContext) as? KtTypeAliasSymbol
|
||||||
|
}
|
||||||
|
|
||||||
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): Sequence<KtCallableSymbol> {
|
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): Sequence<KtCallableSymbol> {
|
||||||
val packageViewDescriptor = analysisContext.resolveSession.moduleDescriptor.getPackage(packageFqName)
|
val packageViewDescriptor = analysisContext.resolveSession.moduleDescriptor.getPackage(packageFqName)
|
||||||
return packageViewDescriptor.memberScope.getContributedDescriptors(DescriptorKindFilter.ALL, nameFilter = { it == name })
|
return packageViewDescriptor.memberScope.getContributedDescriptors(DescriptorKindFilter.ALL, nameFilter = { it == name })
|
||||||
|
|||||||
+5
@@ -161,6 +161,11 @@ internal class KtFirSymbolProvider(
|
|||||||
return firSymbolBuilder.classifierBuilder.buildNamedClassOrObjectSymbol(symbol)
|
return firSymbolBuilder.classifierBuilder.buildNamedClassOrObjectSymbol(symbol)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getTypeAliasByClassId(classId: ClassId): KtTypeAliasSymbol? {
|
||||||
|
val symbol = firSymbolProvider.getClassLikeSymbolByClassId(classId) as? FirTypeAliasSymbol ?: return null
|
||||||
|
return firSymbolBuilder.classifierBuilder.buildTypeAliasSymbol(symbol)
|
||||||
|
}
|
||||||
|
|
||||||
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): Sequence<KtCallableSymbol> {
|
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): Sequence<KtCallableSymbol> {
|
||||||
val firs = firSymbolProvider.getTopLevelCallableSymbols(packageFqName, name)
|
val firs = firSymbolProvider.getTopLevelCallableSymbols(packageFqName, name)
|
||||||
return firs.asSequence().map { firSymbol ->
|
return firs.asSequence().map { firSymbol ->
|
||||||
|
|||||||
+8
@@ -55,6 +55,8 @@ public abstract class KtSymbolProvider : KtAnalysisSessionComponent() {
|
|||||||
|
|
||||||
public abstract fun getClassOrObjectSymbolByClassId(classId: ClassId): KtClassOrObjectSymbol?
|
public abstract fun getClassOrObjectSymbolByClassId(classId: ClassId): KtClassOrObjectSymbol?
|
||||||
|
|
||||||
|
public abstract fun getTypeAliasByClassId(classId: ClassId): KtTypeAliasSymbol?
|
||||||
|
|
||||||
public abstract fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): Sequence<KtCallableSymbol>
|
public abstract fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): Sequence<KtCallableSymbol>
|
||||||
|
|
||||||
@Suppress("PropertyName")
|
@Suppress("PropertyName")
|
||||||
@@ -142,6 +144,12 @@ public interface KtSymbolProviderMixIn : KtAnalysisSessionMixIn {
|
|||||||
public fun getClassOrObjectSymbolByClassId(classId: ClassId): KtClassOrObjectSymbol? =
|
public fun getClassOrObjectSymbolByClassId(classId: ClassId): KtClassOrObjectSymbol? =
|
||||||
withValidityAssertion { analysisSession.symbolProvider.getClassOrObjectSymbolByClassId(classId) }
|
withValidityAssertion { analysisSession.symbolProvider.getClassOrObjectSymbolByClassId(classId) }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return [KtTypeAliasSymbol] with specified [classId] or `null` in case such symbol is not found
|
||||||
|
*/
|
||||||
|
public fun getTypeAliasByClassId(classId: ClassId): KtTypeAliasSymbol? =
|
||||||
|
withValidityAssertion { analysisSession.symbolProvider.getTypeAliasByClassId(classId) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return list of top-level functions and properties which are visible from current use-site module
|
* @return list of top-level functions and properties which are visible from current use-site module
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user