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,10 +8,14 @@ package org.jetbrains.kotlin.light.classes.symbol.decompiled.service
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.fir.utils.libraries.binary.LibraryFrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
import org.jetbrains.kotlin.analysis.api.impl.base.test.utils.libraries.CompiledLibraryProvider
import org.jetbrains.kotlin.analysis.decompiled.light.classes.ClsJavaStubByVirtualFileCache
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.services.ServiceRegistrationData
@@ -24,8 +28,20 @@ internal object SymbolLightClassesForLibraryFrontendApiTestConfiguratorService :
useAdditionalServices(ServiceRegistrationData(CompiledLibraryProvider::class, ::CompiledLibraryProvider))
}
override fun registerProjectServices(project: MockProject) {
LibraryFrontendApiTestConfiguratorService.registerProjectServices(project)
override fun registerProjectServices(
project: MockProject,
compilerConfig: CompilerConfiguration,
files: List<KtFile>,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
projectStructureProvider: ProjectStructureProvider
) {
LibraryFrontendApiTestConfiguratorService.registerProjectServices(
project,
compilerConfig,
files,
packagePartProvider,
projectStructureProvider
)
project.registerService(ClsJavaStubByVirtualFileCache::class.java)
}
@@ -36,4 +52,4 @@ internal object SymbolLightClassesForLibraryFrontendApiTestConfiguratorService :
override fun doOutOfBlockModification(file: KtFile) {
LibraryFrontendApiTestConfiguratorService.doOutOfBlockModification(file)
}
}
}