FIR: get rid of symbolProvider.getClassDeclaredMemberScope at all

This commit is contained in:
Mikhail Glukhikh
2019-12-12 12:45:10 +03:00
parent af87a183c2
commit 663d545d79
9 changed files with 8 additions and 34 deletions
@@ -64,12 +64,6 @@ class JavaSymbolProvider(
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List<FirCallableSymbol<*>> = override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List<FirCallableSymbol<*>> =
emptyList() emptyList()
// NB: looks like it's better not to use this function at all...
override fun getClassDeclaredMemberScope(classId: ClassId): FirScope? {
// Anyway we cannot build correct declared member scope here
return null
}
override fun getClassUseSiteMemberScope( override fun getClassUseSiteMemberScope(
classId: ClassId, classId: ClassId,
useSiteSession: FirSession, useSiteSession: FirSession,
@@ -29,7 +29,6 @@ import org.jetbrains.kotlin.fir.references.impl.FirErrorNamedReferenceImpl
import org.jetbrains.kotlin.fir.references.impl.FirResolvedNamedReferenceImpl import org.jetbrains.kotlin.fir.references.impl.FirResolvedNamedReferenceImpl
import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.impl.declaredMemberScope
import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl
@@ -393,11 +392,6 @@ class KotlinDeserializedJvmSymbolsProvider(
} }
} }
override fun getClassDeclaredMemberScope(classId: ClassId) =
findRegularClass(classId)?.let {
declaredMemberScope(it)
}
private fun getPackageParts(packageFqName: FqName): Collection<PackagePartsCacheData> { private fun getPackageParts(packageFqName: FqName): Collection<PackagePartsCacheData> {
return packagePartsCache.getOrPut(packageFqName) { return packagePartsCache.getOrPut(packageFqName) {
try { try {
@@ -53,7 +53,6 @@ abstract class FirSymbolProvider : FirSessionComponent {
abstract fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List<FirCallableSymbol<*>> abstract fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List<FirCallableSymbol<*>>
abstract fun getClassDeclaredMemberScope(classId: ClassId): FirScope?
abstract fun getClassUseSiteMemberScope( abstract fun getClassUseSiteMemberScope(
classId: ClassId, classId: ClassId,
useSiteSession: FirSession, useSiteSession: FirSession,
@@ -29,8 +29,6 @@ class FirCompositeSymbolProvider(val providers: List<FirSymbolProvider>) : FirSy
return providers.flatMap { it.getTopLevelCallableSymbols(packageFqName, name) } return providers.flatMap { it.getTopLevelCallableSymbols(packageFqName, name) }
} }
override fun getClassDeclaredMemberScope(classId: ClassId) = providers.firstNotNullResult { it.getClassDeclaredMemberScope(classId) }
override fun getPackage(fqName: FqName): FqName? { override fun getPackage(fqName: FqName): FqName? {
return providers.firstNotNullResult { it.getPackage(fqName) } return providers.firstNotNullResult { it.getPackage(fqName) }
} }
@@ -33,9 +33,6 @@ class FirDependenciesSymbolProviderImpl(val session: FirSession) : AbstractFirSy
} ?: emptyList() } ?: emptyList()
} }
override fun getClassDeclaredMemberScope(classId: ClassId) =
dependencyProviders.firstNotNullResult { it.getClassDeclaredMemberScope(classId) }
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? { override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? {
return classCache.lookupCacheOrCalculate(classId) { return classCache.lookupCacheOrCalculate(classId) {
for (provider in dependencyProviders) { for (provider in dependencyProviders) {
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.getOrPut import org.jetbrains.kotlin.fir.resolve.getOrPut
import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.impl.FirClassDeclaredMemberScope
import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
@@ -265,9 +264,6 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider(
} ?: emptyList() } ?: emptyList()
} }
override fun getClassDeclaredMemberScope(classId: ClassId): FirScope? =
findRegularClass(classId)?.let(::FirClassDeclaredMemberScope)
override fun getAllCallableNamesInPackage(fqName: FqName): Set<Name> { override fun getAllCallableNamesInPackage(fqName: FqName): Set<Name> {
return allPackageFragments[fqName]?.flatMapTo(mutableSetOf()) { return allPackageFragments[fqName]?.flatMapTo(mutableSetOf()) {
it.getAllCallableNames() it.getAllCallableNames()
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.resolve.FirProvider import org.jetbrains.kotlin.fir.resolve.FirProvider
import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.impl.FirClassDeclaredMemberScope
import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.impl.*
@@ -39,9 +38,6 @@ class FirProviderImpl(val session: FirSession) : FirProvider() {
return (state.callableMap[CallableId(packageFqName, null, name)] ?: emptyList()) return (state.callableMap[CallableId(packageFqName, null, name)] ?: emptyList())
} }
override fun getClassDeclaredMemberScope(classId: ClassId) =
(getFirClassifierByFqName(classId) as? FirRegularClass)?.let(::FirClassDeclaredMemberScope)
override fun getFirClassifierContainerFile(fqName: ClassId): FirFile { override fun getFirClassifierContainerFile(fqName: ClassId): FirFile {
return state.classifierContainerFileMap[fqName] ?: error("Couldn't find container for $fqName") return state.classifierContainerFileMap[fqName] ?: error("Couldn't find container for $fqName")
} }
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.references.*
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.resolve.FirProvider import org.jetbrains.kotlin.fir.resolve.FirProvider
import org.jetbrains.kotlin.fir.resolve.ResolutionMode import org.jetbrains.kotlin.fir.resolve.ResolutionMode
import org.jetbrains.kotlin.fir.resolve.getClassDeclaredCallableSymbols
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDesignatedBodyResolveTransformer import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDesignatedBodyResolveTransformer
import org.jetbrains.kotlin.fir.resolve.transformers.runResolve import org.jetbrains.kotlin.fir.resolve.transformers.runResolve
import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.ProcessorAction
@@ -43,10 +44,14 @@ private fun FirFile.findCallableMember(
provider: FirProvider, callableMember: KtCallableDeclaration, provider: FirProvider, callableMember: KtCallableDeclaration,
packageFqName: FqName, klassFqName: FqName?, declName: Name packageFqName: FqName, klassFqName: FqName?, declName: Name
): FirCallableDeclaration<*> { ): FirCallableDeclaration<*> {
if (klassFqName != null) {
return provider.getClassDeclaredCallableSymbols(ClassId(packageFqName, klassFqName, false), declName)
.find { symbol: FirCallableSymbol<*> ->
symbol.fir.psi == callableMember
}?.fir ?: error("Cannot find FIR callable declaration ${CallableId(packageFqName, klassFqName, declName)}")
}
// NB: not sure it's correct to use member scope provider from here (because of possible changes) // NB: not sure it's correct to use member scope provider from here (because of possible changes)
val memberScope = val memberScope = FirSelfImportingScope(this.packageFqName, session)
if (klassFqName == null) FirSelfImportingScope(this.packageFqName, session)
else provider.getClassDeclaredMemberScope(ClassId(packageFqName, klassFqName, false))!!
var result: FirCallableDeclaration<*>? = null var result: FirCallableDeclaration<*>? = null
val processor = { symbol: FirCallableSymbol<*> -> val processor = { symbol: FirCallableSymbol<*> ->
val fir = symbol.fir val fir = symbol.fir
@@ -141,11 +141,6 @@ class IdeFirProvider(
} }
} }
override fun getClassDeclaredMemberScope(classId: ClassId): FirScope? {
getFirClassifierByFqName(classId)
return cacheProvider.getClassDeclaredMemberScope(classId)
}
override fun getClassUseSiteMemberScope(classId: ClassId, useSiteSession: FirSession, scopeSession: ScopeSession): FirScope? { override fun getClassUseSiteMemberScope(classId: ClassId, useSiteSession: FirSession, scopeSession: ScopeSession): FirScope? {
getFirClassifierByFqName(classId) getFirClassifierByFqName(classId)
return cacheProvider.getClassUseSiteMemberScope(classId, useSiteSession, scopeSession) return cacheProvider.getClassUseSiteMemberScope(classId, useSiteSession, scopeSession)