[FIR] Type "top-level classifier names in package" as Name

- This is more consistent with "top-level callable names in package" and
  simplifies the set construction quite a bit, as we can avoid a lot of
  `asString` conversions.
This commit is contained in:
Marco Pennekamp
2023-10-19 19:21:45 +02:00
committed by Space Team
parent 8034d522b9
commit efe587691b
16 changed files with 43 additions and 41 deletions
@@ -51,7 +51,7 @@ internal class LLFirCombinedJavaSymbolProvider private constructor(
private val classCache: NullableCaffeineCache<ClassId, FirRegularClassSymbol> = NullableCaffeineCache { it.maximumSize(2500) }
override val symbolNamesProvider: FirSymbolNamesProvider = object : FirSymbolNamesProviderWithoutCallables() {
override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set<String>? = null
override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set<Name>? = null
override fun mayHaveTopLevelClassifier(classId: ClassId): Boolean = true
}
@@ -35,7 +35,7 @@ internal class LLFirCombinedSyntheticFunctionSymbolProvider private constructor(
// `FirCompositeSymbolNamesProvider` defines `mayHaveSyntheticFunctionTypes` and `mayHaveSyntheticFunctionType` correctly, which is
// needed for consistency should this symbol provider be part of another composite symbol provider.
object : FirCompositeSymbolNamesProvider(providers.map { it.symbolNamesProvider }) {
override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set<String> = emptySet()
override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set<Name> = emptySet()
override fun getPackageNamesWithTopLevelCallables(): Set<String> = emptySet()
override fun getTopLevelCallableNamesInPackage(packageFqName: FqName): Set<Name> = emptySet()
}
@@ -75,11 +75,9 @@ private class LLFirResolveExtensionToolSymbolNamesProvider(
private val packageFilter: LLFirResolveExtensionToolPackageFilter,
private val fileProvider: LLFirResolveExtensionsFileProvider,
) : FirSymbolNamesProvider() {
override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set<String> = forbidAnalysis {
override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set<Name> = forbidAnalysis {
if (!packageFilter.packageExists(packageFqName)) return emptySet()
fileProvider.getFilesByPackage(packageFqName)
.flatMap { it.getTopLevelClassifierNames() }
.mapTo(mutableSetOf()) { it.asString() }
fileProvider.getFilesByPackage(packageFqName).flatMap { it.getTopLevelClassifierNames() }.toSet()
}
override fun getPackageNamesWithTopLevelCallables(): Set<String> = forbidAnalysis {
@@ -25,12 +25,10 @@ internal open class LLFirKotlinSymbolNamesProvider(
private val declarationProvider: KotlinDeclarationProvider,
private val allowKotlinPackage: Boolean? = null,
) : FirSymbolNamesProvider() {
override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set<String> {
override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set<Name> {
if (allowKotlinPackage == false && packageFqName.isKotlinPackage()) return emptySet()
return declarationProvider
.getTopLevelKotlinClassLikeDeclarationNamesInPackage(packageFqName)
.mapToSetOrEmpty { it.asString() }
return declarationProvider.getTopLevelKotlinClassLikeDeclarationNamesInPackage(packageFqName)
}
override fun getPackageNamesWithTopLevelCallables(): Set<String>? {