[AA] KT-58580 Add KotlinDeclarationProviderMerger

- A proper merging strategy for declaration providers is required for
  cases where the main declaration provider created by
  `createDeclarationProvider` can't provide all declarations that the
  original declaration providers can provide. Then, only a sublist of
  the declaration providers should be merged, while keeping the
  unmergeable declaration providers intact.

^KT-58580 fixed
This commit is contained in:
Marco Pennekamp
2023-05-17 15:37:27 +02:00
committed by Space Team
parent fba0648005
commit 915c412929
12 changed files with 105 additions and 21 deletions
@@ -141,6 +141,7 @@ public class StandaloneAnalysisAPISessionBuilder(
kotlinCoreProjectEnvironment.environment.jarFileSystem as CoreJarFileSystem
)
)
registerService(KotlinDeclarationProviderMerger::class.java, KotlinStaticDeclarationProviderMerger(this))
registerService(KotlinPackageProviderFactory::class.java, KotlinStaticPackageProviderFactory(project, ktFiles))
registerService(KtAnalysisSessionProvider::class.java, KtFirAnalysisSessionProvider(this))
@@ -159,6 +159,10 @@ internal fun configureProjectEnvironment(
KotlinDeclarationProviderFactory::class.java,
KotlinStaticDeclarationProviderFactory(project, ktFiles)
)
project.registerService(
KotlinDeclarationProviderMerger::class.java,
KotlinStaticDeclarationProviderMerger(project)
)
project.registerService(
KotlinPackageProviderFactory::class.java,
KotlinStaticPackageProviderFactory(project, ktFiles)