AA: refactor service registrations

such that AA standalone mode doesn't need to unregister services that
were already registered by pre-analysis handlers
This commit is contained in:
Jinseong Jeon
2022-02-03 20:32:06 -08:00
committed by Ilya Kirillov
parent 26e923e3ae
commit a986aff429
18 changed files with 211 additions and 112 deletions
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.test
import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.api.InvalidWayOfUsingAnalysisSession
import org.jetbrains.kotlin.analysis.api.KtAnalysisSessionProvider
import org.jetbrains.kotlin.analysis.api.descriptors.CliFe10AnalysisFacade
@@ -17,7 +18,10 @@ import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSessionProvid
import org.jetbrains.kotlin.analysis.api.descriptors.references.base.KtFe10KotlinReferenceProviderContributor
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.idea.references.KotlinReferenceProviderContributor
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
import org.jetbrains.kotlin.psi.KotlinReferenceProvidersService
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.extensions.AnalysisHandlerExtension
@@ -43,7 +47,13 @@ object KtFe10FrontendApiTestConfiguratorService : FrontendApiTestConfiguratorSer
}
@OptIn(InvalidWayOfUsingAnalysisSession::class)
override fun registerProjectServices(project: MockProject) {
override fun registerProjectServices(
project: MockProject,
compilerConfig: CompilerConfiguration,
files: List<KtFile>,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
projectStructureProvider: ProjectStructureProvider
) {
project.registerService(KtAnalysisSessionProvider::class.java, KtFe10AnalysisSessionProvider())
project.registerService(Fe10AnalysisFacade::class.java, CliFe10AnalysisFacade(project))
AnalysisHandlerExtension.registerExtension(project, KtFe10AnalysisHandlerExtension())
@@ -73,4 +83,4 @@ object KtFe10FrontendApiTestConfiguratorService : FrontendApiTestConfiguratorSer
if (newPath.toFile().exists()) return newPath
return path
}
}
}