From 254034315919d94f9ef4a7496c8621d467d28b2f Mon Sep 17 00:00:00 2001 From: Marco Pennekamp Date: Thu, 11 May 2023 18:13:27 +0200 Subject: [PATCH] [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. --- .../low/level/api/fir/providers/LLFirProviderHelper.kt | 5 ++++- .../low/level/api/fir/util/LLFirKotlinSymbolNamesProvider.kt | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProviderHelper.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProviderHelper.kt index 5ecdbf63421..bca1b5431af 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProviderHelper.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProviderHelper.kt @@ -83,7 +83,10 @@ internal class LLFirProviderHelper( val symbolNameCache = FirCompositeCachedSymbolNamesProvider.create( firSession, listOfNotNull( - LLFirKotlinSymbolNamesProvider(declarationProvider), + object : LLFirKotlinSymbolNamesProvider(declarationProvider) { + // This is a temporary workaround for KTIJ-25536. + override fun getPackageNamesWithTopLevelCallables(): Set? = null + }, extensionTool?.symbolNamesProvider, ) ) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/LLFirKotlinSymbolNamesProvider.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/LLFirKotlinSymbolNamesProvider.kt index 753f53e8794..0a336379590 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/LLFirKotlinSymbolNamesProvider.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/LLFirKotlinSymbolNamesProvider.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.name.Name /** * A [FirSymbolNamesProvider] that fetches top-level names from a Kotlin [declarationProvider]. */ -internal class LLFirKotlinSymbolNamesProvider( +internal open class LLFirKotlinSymbolNamesProvider( private val declarationProvider: KotlinDeclarationProvider, ) : FirSymbolNamesProvider() { override fun getTopLevelClassifierNamesInPackage(packageFqName: FqName): Set = @@ -24,7 +24,7 @@ internal class LLFirKotlinSymbolNamesProvider( .getTopLevelKotlinClassLikeDeclarationNamesInPackage(packageFqName) .mapTo(mutableSetOf()) { it.asString() } - override fun getPackageNamesWithTopLevelCallables(): Set = + override fun getPackageNamesWithTopLevelCallables(): Set? = declarationProvider.computePackageSetWithTopLevelCallableDeclarations() override fun getTopLevelCallableNamesInPackage(packageFqName: FqName): Set =