mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin][k2] Implement IdeKotlinPackageProviderMerger
^KT-61791 GitOrigin-RevId: 793f2e4e1dbd260716a2801f54c5283dc0155b25
This commit is contained in:
committed by
intellij-monorepo-bot
parent
4e41fbe678
commit
764c8ca8fb
+3
@@ -15,6 +15,9 @@
|
||||
<projectService
|
||||
serviceInterface="org.jetbrains.kotlin.analysis.providers.KotlinPackageProviderFactory"
|
||||
serviceImplementation="org.jetbrains.kotlin.idea.base.analysisApiProviders.IdeKotlinPackageProviderFactory"/>
|
||||
<projectService
|
||||
serviceInterface="org.jetbrains.kotlin.analysis.providers.KotlinPackageProviderMerger"
|
||||
serviceImplementation="org.jetbrains.kotlin.idea.base.analysisApiProviders.IdeKotlinPackageProviderMerger"/>
|
||||
<projectService
|
||||
serviceInterface="org.jetbrains.kotlin.analysis.providers.KotlinMessageBusProvider"
|
||||
serviceImplementation="org.jetbrains.kotlin.analysis.providers.impl.KotlinProjectMessageBusProvider"/>
|
||||
|
||||
+14
-1
@@ -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>): 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(
|
||||
|
||||
Reference in New Issue
Block a user