[AA] Make KotlinReferenceProvidersService and KotlinReferenceProviderContributor a project services

There is no need to have those services on application level
This commit is contained in:
Dmitriy Novozhilov
2022-07-28 11:13:50 +03:00
parent 0909cad886
commit 7ef81c27df
8 changed files with 38 additions and 39 deletions
@@ -94,13 +94,6 @@ public class StandaloneAnalysisAPISessionBuilder(
)
}
private fun registerApplicationServices() {
kotlinCoreProjectEnvironment.environment.application.apply {
registerService(KotlinReferenceProvidersService::class.java, HLApiReferenceProviderService::class.java)
registerService(KotlinReferenceProviderContributor::class.java, KotlinFirReferenceContributor::class.java)
}
}
public fun <T : Any> registerApplicationService(serviceInterface: Class<T>, serviceImplementation: T) {
kotlinCoreProjectEnvironment.environment.application.apply {
registerService(serviceInterface, serviceImplementation)
@@ -140,6 +133,10 @@ public class StandaloneAnalysisAPISessionBuilder(
registerService(LLFirBuiltinsSessionFactory::class.java, LLFirBuiltinsSessionFactory(this))
RegisterComponentService.registerLLFirLibrarySessionFactory(this)
RegisterComponentService.registerLLFirNonUnderContentRootSessionFactory(this)
registerService(KotlinReferenceProvidersService::class.java, HLApiReferenceProviderService::class.java)
registerService(KotlinReferenceProviderContributor::class.java, KotlinFirReferenceContributor::class.java)
RegisterComponentService.registerLLFirResolveSessionService(this)
registerService(
PackagePartProviderFactory::class.java,
@@ -203,8 +200,6 @@ public class StandaloneAnalysisAPISessionBuilder(
allSourceFiles,
)
registerApplicationServices()
val project = kotlinCoreProjectEnvironment.project
val ktFiles = allSourceFiles.filterIsInstance<KtFile>()
val libraryRoots = StandaloneProjectFactory.getAllBinaryRoots(modules, kotlinCoreProjectEnvironment)
@@ -79,6 +79,8 @@ public fun configureApplicationEnvironment(app: MockApplication) {
* * [KotlinDeclarationProviderFactory]
* * [KotlinPackageProviderFactory]
* * [PackagePartProviderFactory]
* * [KotlinReferenceProvidersService]
* * [KotlinReferenceProviderContributor]
*
* Note that [ProjectStructureProvider] is built by using
* * given [ktFiles] as Kotlin sources
@@ -122,6 +124,16 @@ internal fun configureProjectEnvironment(
KotlinStaticAnnotationsResolverFactory(ktFiles)
)
project.registerService(
KotlinReferenceProvidersService::class.java,
HLApiReferenceProviderService::class.java
)
project.registerService(
KotlinReferenceProviderContributor::class.java,
KotlinFirReferenceContributor::class.java
)
RegisterComponentService.registerLLFirResolveSessionService(project)
project.picoContainer.registerComponentInstance(
FirSealedClassInheritorsProcessorFactory::class.qualifiedName,