[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:
@@ -43,13 +43,12 @@ class FirJavaElementFinder(
|
|||||||
private val firProvider = session.firProvider
|
private val firProvider = session.firProvider
|
||||||
|
|
||||||
override fun findPackage(qualifiedName: String): PsiPackage? {
|
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)
|
return PsiPackageImpl(psiManager, qualifiedName)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getClasses(psiPackage: PsiPackage, scope: GlobalSearchScope): Array<PsiClass> {
|
override fun getClasses(psiPackage: PsiPackage, scope: GlobalSearchScope): Array<PsiClass> {
|
||||||
return firProvider.symbolProvider
|
return firProvider.getClassNamesInPackage(FqName(psiPackage.qualifiedName))
|
||||||
.getClassNamesInPackage(FqName(psiPackage.qualifiedName))
|
|
||||||
.mapNotNull { findClass(psiPackage.qualifiedName + "." + it.identifier, scope) }
|
.mapNotNull { findClass(psiPackage.qualifiedName + "." + it.identifier, scope) }
|
||||||
.toTypedArray()
|
.toTypedArray()
|
||||||
}
|
}
|
||||||
|
|||||||
-5
@@ -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? =
|
private fun findRegularClass(classId: ClassId): FirRegularClass? =
|
||||||
getClassLikeSymbolByFqName(classId)?.fir as? 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.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@RequiresOptIn
|
@RequiresOptIn
|
||||||
annotation class FirProviderInternals
|
annotation class FirProviderInternals
|
||||||
@@ -44,4 +45,6 @@ abstract class FirProvider : FirSessionComponent {
|
|||||||
|
|
||||||
@FirProviderInternals
|
@FirProviderInternals
|
||||||
abstract fun recordGeneratedMember(owner: FirAnnotatedDeclaration, klass: FirDeclaration)
|
abstract fun recordGeneratedMember(owner: FirAnnotatedDeclaration, klass: FirDeclaration)
|
||||||
|
|
||||||
|
abstract fun getClassNamesInPackage(fqName: FqName): Set<Name>
|
||||||
}
|
}
|
||||||
|
|||||||
-3
@@ -56,9 +56,6 @@ abstract class FirSymbolProvider : FirSessionComponent {
|
|||||||
|
|
||||||
abstract fun getNestedClassifierScope(classId: ClassId): FirScope?
|
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
|
abstract fun getPackage(fqName: FqName): FqName? // TODO: Replace to symbol sometime
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-6
@@ -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? =
|
private fun findRegularClass(classId: ClassId): FirRegularClass? =
|
||||||
getClassLikeSymbolByFqName(classId)?.fir
|
getClassLikeSymbolByFqName(classId)?.fir
|
||||||
|
|
||||||
|
|||||||
-4
@@ -36,8 +36,4 @@ class FirCompositeSymbolProvider(val providers: List<FirSymbolProvider>) : FirSy
|
|||||||
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? {
|
override fun getClassLikeSymbolByFqName(classId: ClassId): FirClassLikeSymbol<*>? {
|
||||||
return providers.firstNotNullResult { it.getClassLikeSymbolByFqName(classId) }
|
return providers.firstNotNullResult { it.getClassLikeSymbolByFqName(classId) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
|
|
||||||
return providers.flatMapTo(mutableSetOf()) { it.getClassNamesInPackage(fqName) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-5
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.fir.resolve.providers.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.dependenciesWithoutSelf
|
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.firSymbolProvider
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.providers.AbstractFirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||||
@@ -63,8 +63,4 @@ open class FirDependenciesSymbolProviderImpl(val session: FirSession) : Abstract
|
|||||||
null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
|
|
||||||
return dependencyProviders.flatMapTo(mutableSetOf()) { it.getClassNamesInPackage(fqName) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-5
@@ -18,7 +18,9 @@ import org.jetbrains.kotlin.fir.scopes.FirScope
|
|||||||
import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.nestedClassifierScope
|
import org.jetbrains.kotlin.fir.scopes.impl.nestedClassifierScope
|
||||||
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.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.fir.visitors.FirDefaultVisitor
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -76,10 +78,6 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: KotlinSc
|
|||||||
if (getFirFilesByPackage(fqName).isNotEmpty()) return fqName
|
if (getFirFilesByPackage(fqName).isNotEmpty()) return fqName
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
|
|
||||||
return state.classesInPackage[fqName] ?: emptySet()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@FirProviderInternals
|
@FirProviderInternals
|
||||||
@@ -259,6 +257,10 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: KotlinSc
|
|||||||
state.setFrom(newState)
|
state.setFrom(newState)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
|
||||||
|
return state.classesInPackage[fqName] ?: emptySet()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private const val rebuildIndex = true
|
private const val rebuildIndex = true
|
||||||
|
|||||||
+5
@@ -112,6 +112,11 @@ internal class FirIdeProvider(
|
|||||||
TODO()
|
TODO()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
|
||||||
|
// TODO: KT-41048
|
||||||
|
return emptySet()
|
||||||
|
}
|
||||||
|
|
||||||
private inner class SymbolProvider : FirSymbolProvider() {
|
private inner class SymbolProvider : FirSymbolProvider() {
|
||||||
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List<FirCallableSymbol<*>> =
|
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List<FirCallableSymbol<*>> =
|
||||||
providerHelper.getTopLevelCallableSymbols(packageFqName, name)
|
providerHelper.getTopLevelCallableSymbols(packageFqName, name)
|
||||||
|
|||||||
+2
-3
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.frontend.api.fir.scopes
|
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.fir.scopes.impl.FirPackageMemberScope
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
|
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
|
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
|
||||||
@@ -25,7 +24,6 @@ internal class KtFirPackageScope(
|
|||||||
) : KtPackageScope, ValidityTokenOwner {
|
) : KtPackageScope, ValidityTokenOwner {
|
||||||
private val firScope by weakRef(firScope)
|
private val firScope by weakRef(firScope)
|
||||||
override val fqName: FqName get() = firScope.fqName
|
override val fqName: FqName get() = firScope.fqName
|
||||||
private val provider get() = firScope.session.firSymbolProvider
|
|
||||||
|
|
||||||
override fun getCallableNames(): Set<Name> = withValidityAssertion {
|
override fun getCallableNames(): Set<Name> = withValidityAssertion {
|
||||||
// TODO: KT-41048
|
// TODO: KT-41048
|
||||||
@@ -33,7 +31,8 @@ internal class KtFirPackageScope(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getClassLikeSymbolNames(): Set<Name> = withValidityAssertion {
|
override fun getClassLikeSymbolNames(): Set<Name> = withValidityAssertion {
|
||||||
provider.getClassNamesInPackage(fqName)
|
// TODO: KT-41048
|
||||||
|
emptySet()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getCallableSymbols(): Sequence<KtCallableSymbol> = withValidityAssertion {
|
override fun getCallableSymbols(): Sequence<KtCallableSymbol> = withValidityAssertion {
|
||||||
|
|||||||
Reference in New Issue
Block a user