[FIR] Get rid of FirSymbolProvider.getClassNamesInPackage

There was one non-removable usage of those function in FirJavaElementFinder
  and three non-trivial implementation
- `FirProvider.SymbolProvider`
- `KotlinDeserializedJvmSymbolsProvider`
- `FirBuiltinSymbolProvider`

First implementation was moved to `FirProvider` and other two was
  deleted, because in FirJavaElementFinder we need lookup only in
  classes from source code, so such methods in library providers are
  useless

#KT-41048
This commit is contained in:
Dmitriy Novozhilov
2020-08-13 13:44:37 +03:00
parent b31f80aee3
commit d7cfb2fb13
10 changed files with 20 additions and 34 deletions
@@ -43,13 +43,12 @@ class FirJavaElementFinder(
private val firProvider = session.firProvider
override fun findPackage(qualifiedName: String): PsiPackage? {
if (firProvider.symbolProvider.getClassNamesInPackage(FqName(qualifiedName)).isEmpty()) return null
if (firProvider.symbolProvider.getPackage(FqName(qualifiedName)) == null) return null
return PsiPackageImpl(psiManager, qualifiedName)
}
override fun getClasses(psiPackage: PsiPackage, scope: GlobalSearchScope): Array<PsiClass> {
return firProvider.symbolProvider
.getClassNamesInPackage(FqName(psiPackage.qualifiedName))
return firProvider.getClassNamesInPackage(FqName(psiPackage.qualifiedName))
.mapNotNull { findClass(psiPackage.qualifiedName + "." + it.identifier, scope) }
.toTypedArray()
}
@@ -408,11 +408,6 @@ class KotlinDeserializedJvmSymbolsProvider(
}
}
override fun getClassNamesInPackage(fqName: FqName): Set<Name> =
javaClassFinder.findPackage(fqName)
?.getClasses { true }.orEmpty()
.mapTo(sortedSetOf(), JavaClass::name)
private fun findRegularClass(classId: ClassId): FirRegularClass? =
getClassLikeSymbolByFqName(classId)?.fir as? FirRegularClass
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
@RequiresOptIn
annotation class FirProviderInternals
@@ -44,4 +45,6 @@ abstract class FirProvider : FirSessionComponent {
@FirProviderInternals
abstract fun recordGeneratedMember(owner: FirAnnotatedDeclaration, klass: FirDeclaration)
abstract fun getClassNamesInPackage(fqName: FqName): Set<Name>
}
@@ -56,9 +56,6 @@ abstract class FirSymbolProvider : FirSessionComponent {
abstract fun getNestedClassifierScope(classId: ClassId): FirScope?
@Deprecated("will be deleted soon")
open fun getClassNamesInPackage(fqName: FqName): Set<Name> = emptySet()
abstract fun getPackage(fqName: FqName): FqName? // TODO: Replace to symbol sometime
}
@@ -257,12 +257,6 @@ class FirBuiltinSymbolProvider(val session: FirSession, val kotlinScopeProvider:
}
}
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
return allPackageFragments[fqName]?.flatMapTo(mutableSetOf()) {
it.getAllClassNames()
} ?: emptySet()
}
private fun findRegularClass(classId: ClassId): FirRegularClass? =
getClassLikeSymbolByFqName(classId)?.fir
@@ -36,8 +36,4 @@ class FirCompositeSymbolProvider(val providers: List<FirSymbolProvider>) : FirSy
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? {
return providers.firstNotNullResult { it.getClassLikeSymbolByFqName(classId) }
}
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
return providers.flatMapTo(mutableSetOf()) { it.getClassNamesInPackage(fqName) }
}
}
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.fir.resolve.providers.impl
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.dependenciesWithoutSelf
import org.jetbrains.kotlin.fir.resolve.providers.AbstractFirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
import org.jetbrains.kotlin.fir.resolve.providers.AbstractFirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.symbols.CallableId
@@ -63,8 +63,4 @@ open class FirDependenciesSymbolProviderImpl(val session: FirSession) : Abstract
null
}
}
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
return dependencyProviders.flatMapTo(mutableSetOf()) { it.getClassNamesInPackage(fqName) }
}
}
@@ -18,7 +18,9 @@ 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.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
@@ -76,10 +78,6 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: KotlinSc
if (getFirFilesByPackage(fqName).isNotEmpty()) return fqName
return null
}
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
return state.classesInPackage[fqName] ?: emptySet()
}
}
@FirProviderInternals
@@ -259,6 +257,10 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: KotlinSc
state.setFrom(newState)
}
}
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
return state.classesInPackage[fqName] ?: emptySet()
}
}
private const val rebuildIndex = true
@@ -112,6 +112,11 @@ internal class FirIdeProvider(
TODO()
}
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
// TODO: KT-41048
return emptySet()
}
private inner class SymbolProvider : FirSymbolProvider() {
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List<FirCallableSymbol<*>> =
providerHelper.getTopLevelCallableSymbols(packageFqName, name)
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.idea.frontend.api.fir.scopes
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
import org.jetbrains.kotlin.fir.scopes.impl.FirPackageMemberScope
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
@@ -25,7 +24,6 @@ internal class KtFirPackageScope(
) : KtPackageScope, ValidityTokenOwner {
private val firScope by weakRef(firScope)
override val fqName: FqName get() = firScope.fqName
private val provider get() = firScope.session.firSymbolProvider
override fun getCallableNames(): Set<Name> = withValidityAssertion {
// TODO: KT-41048
@@ -33,7 +31,8 @@ internal class KtFirPackageScope(
}
override fun getClassLikeSymbolNames(): Set<Name> = withValidityAssertion {
provider.getClassNamesInPackage(fqName)
// TODO: KT-41048
emptySet()
}
override fun getCallableSymbols(): Sequence<KtCallableSymbol> = withValidityAssertion {