[LL FIR] KTIJ-25536 Add callable package names workaround for LLFirProvider$SymbolProvider

- Sadly, the only way for now is to disable computation of the callable
  package names, which will negatively affect performance.
This commit is contained in:
Marco Pennekamp
2023-05-11 18:13:27 +02:00
committed by Space Team
parent a61c6f6502
commit 2540343159
2 changed files with 6 additions and 3 deletions
@@ -83,7 +83,10 @@ internal class LLFirProviderHelper(
val symbolNameCache = FirCompositeCachedSymbolNamesProvider.create( val symbolNameCache = FirCompositeCachedSymbolNamesProvider.create(
firSession, firSession,
listOfNotNull( listOfNotNull(
LLFirKotlinSymbolNamesProvider(declarationProvider), object : LLFirKotlinSymbolNamesProvider(declarationProvider) {
// This is a temporary workaround for KTIJ-25536.
override fun getPackageNamesWithTopLevelCallables(): Set<String>? = null
},
extensionTool?.symbolNamesProvider, extensionTool?.symbolNamesProvider,
) )
) )
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.name.Name
/** /**
* A [FirSymbolNamesProvider] that fetches top-level names from a Kotlin [declarationProvider]. * A [FirSymbolNamesProvider] that fetches top-level names from a Kotlin [declarationProvider].
*/ */
internal class LLFirKotlinSymbolNamesProvider( internal open class LLFirKotlinSymbolNamesProvider(
private val declarationProvider: KotlinDeclarationProvider, private val declarationProvider: KotlinDeclarationProvider,
) : FirSymbolNamesProvider() { ) : FirSymbolNamesProvider() {
override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set<String> = override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set<String> =
@@ -24,7 +24,7 @@ internal class LLFirKotlinSymbolNamesProvider(
.getTopLevelKotlinClassLikeDeclarationNamesInPackage(packageFqName) .getTopLevelKotlinClassLikeDeclarationNamesInPackage(packageFqName)
.mapTo(mutableSetOf()) { it.asString() } .mapTo(mutableSetOf()) { it.asString() }
override fun getPackageNamesWithTopLevelCallables(): Set<String> = override fun getPackageNamesWithTopLevelCallables(): Set<String>? =
declarationProvider.computePackageSetWithTopLevelCallableDeclarations() declarationProvider.computePackageSetWithTopLevelCallableDeclarations()
override fun getTopLevelCallableNamesInPackage(packageFqName: FqName): Set<Name> = override fun getTopLevelCallableNamesInPackage(packageFqName: FqName): Set<Name> =