[FIR] Get rid of FirSymbolProvider.getNestedClassifierScope

This commit is contained in:
Dmitriy Novozhilov
2020-08-13 17:46:52 +03:00
parent 77f52a9ddb
commit 9032234e1d
18 changed files with 51 additions and 114 deletions
@@ -13,9 +13,9 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.analysis.registerCheckersComponent
import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider
import org.jetbrains.kotlin.fir.resolve.calls.jvm.registerJvmCallConflictResolverFactory
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.calls.jvm.registerJvmCallConflictResolverFactory
import org.jetbrains.kotlin.fir.resolve.providers.impl.*
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider
@@ -48,6 +48,7 @@ class FirJavaModuleBasedSession private constructor(
register(
FirSymbolProvider::class,
FirCompositeSymbolProvider(
this,
listOf(
firProvider.symbolProvider,
JavaSymbolProvider(this, sessionProvider.project, scope),
@@ -97,6 +98,7 @@ class FirLibrarySession private constructor(
register(
FirSymbolProvider::class,
FirCompositeSymbolProvider(
this,
listOf(
KotlinDeserializedJvmSymbolsProvider(
this, sessionProvider.project,
@@ -24,9 +24,6 @@ import org.jetbrains.kotlin.fir.resolve.providers.AbstractFirSymbolProviderWithC
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
import org.jetbrains.kotlin.fir.resolve.providers.SymbolProviderCache
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.impl.lazyNestedClassifierScope
import org.jetbrains.kotlin.fir.scopes.impl.nestedClassifierScope
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
@@ -45,10 +42,10 @@ import org.jetbrains.kotlin.util.OperatorNameConventions
import org.jetbrains.kotlin.utils.addIfNotNull
class JavaSymbolProvider(
val session: FirSession,
session: FirSession,
val project: Project,
private val searchScope: GlobalSearchScope,
) : AbstractFirSymbolProviderWithCache<FirRegularClassSymbol>() {
) : AbstractFirSymbolProviderWithCache<FirRegularClassSymbol>(session) {
companion object {
private val VALUE_METHOD_NAME = Name.identifier("value")
}
@@ -66,20 +63,6 @@ class JavaSymbolProvider(
@FirSymbolProviderInternals
override fun getTopLevelCallableSymbolsTo(destination: MutableList<FirCallableSymbol<*>>, packageFqName: FqName, name: Name) {}
override fun getNestedClassifierScope(classId: ClassId): FirScope? {
val symbol = this.getClassLikeSymbolByFqName(classId) ?: return null
val regularClass = symbol.fir
return if (regularClass is FirJavaClass) {
lazyNestedClassifierScope(
classId,
existingNames = regularClass.existingNestedClassifierNames,
symbolProvider = this,
)
} else {
nestedClassifierScope(regularClass)
}
}
private fun JavaTypeParameter.toFirTypeParameterSymbol(
javaTypeParameterStack: JavaTypeParameterStack
): Pair<FirTypeParameterSymbol, Boolean> {
@@ -29,9 +29,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.AbstractFirSymbolProviderWithC
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
import org.jetbrains.kotlin.fir.resolve.providers.SymbolProviderCache
import org.jetbrains.kotlin.fir.resolve.providers.getClassDeclaredCallableSymbols
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider
import org.jetbrains.kotlin.fir.scopes.impl.nestedClassifierScope
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
@@ -56,14 +54,14 @@ import org.jetbrains.kotlin.serialization.deserialization.getName
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
class KotlinDeserializedJvmSymbolsProvider(
val session: FirSession,
session: FirSession,
val project: Project,
private val packagePartProvider: PackagePartProvider,
private val javaSymbolProvider: JavaSymbolProvider,
private val kotlinClassFinder: KotlinClassFinder,
private val javaClassFinder: JavaClassFinder,
private val kotlinScopeProvider: KotlinScopeProvider,
) : AbstractFirSymbolProviderWithCache<FirRegularClassSymbol>() {
) : AbstractFirSymbolProviderWithCache<FirRegularClassSymbol>(session) {
private val typeAliasCache = SymbolProviderCache<ClassId, FirTypeAliasSymbol>()
private val packagePartsCache = SymbolProviderCache<FqName, Collection<PackagePartsCacheData>>()
@@ -391,12 +389,6 @@ class KotlinDeserializedJvmSymbolsProvider(
}
}
override fun getNestedClassifierScope(classId: ClassId): FirScope? {
return findRegularClass(classId)?.let {
nestedClassifierScope(it)
}
}
private fun getPackageParts(packageFqName: FqName): Collection<PackagePartsCacheData> {
return packagePartsCache.lookupCacheOrCalculate(packageFqName) {
try {