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:
committed by
Ilya Kirillov
parent
26e923e3ae
commit
a986aff429
+19
-2
@@ -8,11 +8,16 @@ package org.jetbrains.kotlin.analysis.api.fir
|
||||
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.impl.barebone.test.FrontendApiTestConfiguratorService
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.registerTestServices
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.FirLowLevelFrontendApiTestConfiguratorService
|
||||
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.idea.references.KotlinFirReferenceContributor
|
||||
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.test.builders.TestConfigurationBuilder
|
||||
@@ -30,8 +35,20 @@ object FirFrontendApiTestConfiguratorService : FrontendApiTestConfiguratorServic
|
||||
return FirLowLevelFrontendApiTestConfiguratorService.getOriginalFile(file)
|
||||
}
|
||||
|
||||
override fun registerProjectServices(project: MockProject) {
|
||||
FirLowLevelFrontendApiTestConfiguratorService.registerProjectServices(project)
|
||||
override fun registerProjectServices(
|
||||
project: MockProject,
|
||||
compilerConfig: CompilerConfiguration,
|
||||
files: List<KtFile>,
|
||||
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
||||
projectStructureProvider: ProjectStructureProvider
|
||||
) {
|
||||
FirLowLevelFrontendApiTestConfiguratorService.registerProjectServices(
|
||||
project,
|
||||
compilerConfig,
|
||||
files,
|
||||
packagePartProvider,
|
||||
projectStructureProvider
|
||||
)
|
||||
}
|
||||
|
||||
override fun registerApplicationServices(application: MockApplication) {
|
||||
|
||||
+13
-2
@@ -13,6 +13,7 @@ import com.intellij.openapi.extensions.LoadingOrder
|
||||
import com.intellij.psi.ClassFileViewProviderFactory
|
||||
import com.intellij.psi.FileTypeFileViewProviders
|
||||
import com.intellij.psi.compiled.ClassFileDecompilers
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.api.fir.FirFrontendApiTestConfiguratorService
|
||||
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.utils.libraries.LibraryEnvironmentConfigurator
|
||||
@@ -21,6 +22,10 @@ import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinClassFileDecompiler
|
||||
import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache
|
||||
import org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService
|
||||
import org.jetbrains.kotlin.analysis.decompiler.stub.files.DummyFileAttributeService
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.registerTestServices
|
||||
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
|
||||
|
||||
@@ -32,10 +37,16 @@ object LibraryFrontendApiTestConfiguratorService : FrontendApiTestConfiguratorSe
|
||||
usePreAnalysisHandlers(::LibraryModuleRegistrarPreAnalysisHandler)
|
||||
}
|
||||
|
||||
override fun registerProjectServices(project: MockProject) {
|
||||
override fun registerProjectServices(
|
||||
project: MockProject,
|
||||
compilerConfig: CompilerConfiguration,
|
||||
files: List<KtFile>,
|
||||
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
||||
projectStructureProvider: ProjectStructureProvider
|
||||
) {
|
||||
project.registerTestServices(files, packagePartProvider, projectStructureProvider)
|
||||
}
|
||||
|
||||
|
||||
override fun registerApplicationServices(application: MockApplication) {
|
||||
FirFrontendApiTestConfiguratorService.registerApplicationServices(application)
|
||||
if (application.getServiceIfCreated(ClsKotlinBinaryClassCache::class.java) != null) return
|
||||
|
||||
-4
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir.utils.libraries.binary
|
||||
|
||||
import com.intellij.mock.MockProject
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiManager
|
||||
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.TestKtLibraryModule
|
||||
@@ -13,14 +12,12 @@ import org.jetbrains.kotlin.analysis.api.impl.barebone.test.projectModuleProvide
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.utils.libraries.compiledLibraryProvider
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.file.KtClsFile
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.registerTestServices
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
import org.jetbrains.kotlin.test.services.PreAnalysisHandler
|
||||
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
import org.jetbrains.kotlin.test.services.compilerConfigurationProvider
|
||||
|
||||
|
||||
class LibraryModuleRegistrarPreAnalysisHandler(
|
||||
testServices: TestServices
|
||||
) : PreAnalysisHandler(testServices) {
|
||||
@@ -32,7 +29,6 @@ class LibraryModuleRegistrarPreAnalysisHandler(
|
||||
val decompiledKtFiles = getDecompiledVirtualFilesFromLibrary(testModule, project)
|
||||
|
||||
moduleInfoProvider.registerModuleInfo(testModule, TestKtLibraryModule(project, testModule, decompiledKtFiles, testServices))
|
||||
(project as MockProject).registerTestServices(testModule, decompiledKtFiles, testServices)
|
||||
}
|
||||
|
||||
private fun getDecompiledVirtualFilesFromLibrary(module: TestModule, project: Project): List<KtClsFile> {
|
||||
|
||||
+13
-2
@@ -8,10 +8,15 @@ package org.jetbrains.kotlin.analysis.api.fir.utils.libraries.source
|
||||
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.FirFrontendApiTestConfiguratorService
|
||||
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.api.impl.base.test.utils.libraries.LibraryEnvironmentConfigurator
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.registerTestServices
|
||||
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
|
||||
@@ -25,10 +30,16 @@ object LibrarySourceFrontendApiTestConfiguratorService : FrontendApiTestConfigur
|
||||
useAdditionalServices(ServiceRegistrationData(CompiledLibraryProvider::class, ::CompiledLibraryProvider))
|
||||
}
|
||||
|
||||
override fun registerProjectServices(project: MockProject) {
|
||||
override fun registerProjectServices(
|
||||
project: MockProject,
|
||||
compilerConfig: CompilerConfiguration,
|
||||
files: List<KtFile>,
|
||||
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
||||
projectStructureProvider: ProjectStructureProvider
|
||||
) {
|
||||
project.registerTestServices(files, packagePartProvider, projectStructureProvider)
|
||||
}
|
||||
|
||||
|
||||
override fun registerApplicationServices(application: MockApplication) {
|
||||
FirFrontendApiTestConfiguratorService.registerApplicationServices(application)
|
||||
}
|
||||
|
||||
-3
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.analysis.api.fir.utils.libraries.source
|
||||
|
||||
import com.intellij.mock.MockProject
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
@@ -13,7 +12,6 @@ import org.jetbrains.kotlin.analysis.api.impl.barebone.test.TestKtLibrarySourceM
|
||||
import org.jetbrains.kotlin.analysis.api.impl.barebone.test.projectModuleProvider
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.test.utils.libraries.compiledLibraryProvider
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.registerTestServices
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtLibrarySourceModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
@@ -54,7 +52,6 @@ class LibrarySourceModuleRegistrarPreAnalysisHandler(
|
||||
libraryKtModule.librarySources = sourcesKtModule
|
||||
|
||||
moduleInfoProvider.registerModuleInfo(testModule, sourcesKtModule)
|
||||
(project as MockProject).registerTestServices(testModule, librarySourceKtFiles, testServices)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user