From 764c8ca8fb2593eab8ba811f2b8473b59a40a827 Mon Sep 17 00:00:00 2001 From: Marco Pennekamp Date: Tue, 10 Oct 2023 13:18:32 +0200 Subject: [PATCH] [kotlin][k2] Implement `IdeKotlinPackageProviderMerger` ^KT-61791 GitOrigin-RevId: 793f2e4e1dbd260716a2801f54c5283dc0155b25 --- .../kotlin.base.analysis-api-providers.xml | 3 +++ .../IdeKotlinPackageProviderFactory.kt | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/plugins/kotlin/base/analysis-api-providers/resources/kotlin.base.analysis-api-providers.xml b/plugins/kotlin/base/analysis-api-providers/resources/kotlin.base.analysis-api-providers.xml index 0b39310a2e6e..8159e3922291 100644 --- a/plugins/kotlin/base/analysis-api-providers/resources/kotlin.base.analysis-api-providers.xml +++ b/plugins/kotlin/base/analysis-api-providers/resources/kotlin.base.analysis-api-providers.xml @@ -15,6 +15,9 @@ + diff --git a/plugins/kotlin/base/analysis-api-providers/src/org/jetbrains/kotlin/idea/base/analysisApiProviders/IdeKotlinPackageProviderFactory.kt b/plugins/kotlin/base/analysis-api-providers/src/org/jetbrains/kotlin/idea/base/analysisApiProviders/IdeKotlinPackageProviderFactory.kt index 9aba1f0a49ce..839ab4b2debf 100644 --- a/plugins/kotlin/base/analysis-api-providers/src/org/jetbrains/kotlin/idea/base/analysisApiProviders/IdeKotlinPackageProviderFactory.kt +++ b/plugins/kotlin/base/analysis-api-providers/src/org/jetbrains/kotlin/idea/base/analysisApiProviders/IdeKotlinPackageProviderFactory.kt @@ -6,8 +6,11 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.util.CachedValueProvider import org.jetbrains.kotlin.analysis.providers.KotlinPackageProvider import org.jetbrains.kotlin.analysis.providers.KotlinPackageProviderFactory +import org.jetbrains.kotlin.analysis.providers.KotlinPackageProviderMerger import org.jetbrains.kotlin.analysis.providers.createProjectWideOutOfBlockModificationTracker import org.jetbrains.kotlin.analysis.providers.impl.KotlinPackageProviderBase +import org.jetbrains.kotlin.analysis.providers.impl.mergeSpecificProviders +import org.jetbrains.kotlin.analysis.providers.impl.packageProviders.CompositeKotlinPackageProvider import org.jetbrains.kotlin.caches.project.CachedValue import org.jetbrains.kotlin.caches.project.getValue import org.jetbrains.kotlin.idea.base.indices.KotlinPackageIndexUtils @@ -21,9 +24,19 @@ internal class IdeKotlinPackageProviderFactory(private val project: Project) : K } } +internal class IdeKotlinPackageProviderMerger(private val project: Project) : KotlinPackageProviderMerger() { + override fun merge(providers: List): KotlinPackageProvider = + providers.mergeSpecificProviders<_, IdeKotlinPackageProvider>(CompositeKotlinPackageProvider.factory) { targetProviders -> + IdeKotlinPackageProvider( + project, + GlobalSearchScope.union(targetProviders.map { it.searchScope }) + ) + } +} + private class IdeKotlinPackageProvider( project: Project, - searchScope: GlobalSearchScope + searchScope: GlobalSearchScope ) : KotlinPackageProviderBase(project, searchScope) { private val cache by CachedValue(project) { CachedValueProvider.Result(