[LL API] Adjust services required by LLFirBuiltinsSessionFactory
As 'initialiseVirtualFileFinderServices()' that is run during test initialization collects transitive dependencies, all of them must be ready. However, 'KtNotUnderContentRootModuleForTest' has a built-in dependency provided by 'LLFirBuiltinsSessionFactory'.
This commit is contained in:
+3
-1
@@ -29,8 +29,10 @@ object AnalysisApiFe10TestServiceRegistrar : AnalysisApiTestServiceRegistrar() {
|
|||||||
AnalysisHandlerExtension.registerExtensionPoint(project)
|
AnalysisHandlerExtension.registerExtensionPoint(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun registerProjectServices(project: MockProject, testServices: TestServices) {}
|
||||||
|
|
||||||
@OptIn(KtAnalysisApiInternals::class)
|
@OptIn(KtAnalysisApiInternals::class)
|
||||||
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
override fun registerProjectModelServices(project: MockProject, testServices: TestServices) {
|
||||||
project.apply {
|
project.apply {
|
||||||
registerService(KtAnalysisSessionProvider::class.java, KtFe10AnalysisSessionProvider(project))
|
registerService(KtAnalysisSessionProvider::class.java, KtFe10AnalysisSessionProvider(project))
|
||||||
registerService(Fe10AnalysisFacade::class.java, CliFe10AnalysisFacade(project))
|
registerService(Fe10AnalysisFacade::class.java, CliFe10AnalysisFacade(project))
|
||||||
|
|||||||
+6
-2
@@ -32,12 +32,16 @@ object AnalysisApiBaseTestServiceRegistrar: AnalysisApiTestServiceRegistrar() {
|
|||||||
|
|
||||||
@OptIn(KtAnalysisApiInternals::class)
|
@OptIn(KtAnalysisApiInternals::class)
|
||||||
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
||||||
val allKtFiles = testServices.ktModuleProvider.getModuleStructure().mainModules.flatMap { it.files.filterIsInstance<KtFile>() }
|
|
||||||
|
|
||||||
project.apply {
|
project.apply {
|
||||||
registerService(KotlinModificationTrackerFactory::class.java, KotlinStaticModificationTrackerFactory::class.java)
|
registerService(KotlinModificationTrackerFactory::class.java, KotlinStaticModificationTrackerFactory::class.java)
|
||||||
registerService(KtDefaultLifetimeTokenProvider::class.java, KtReadActionConfinementDefaultLifetimeTokenProvider::class.java)
|
registerService(KtDefaultLifetimeTokenProvider::class.java, KtReadActionConfinementDefaultLifetimeTokenProvider::class.java)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun registerProjectModelServices(project: MockProject, testServices: TestServices) {
|
||||||
|
val allKtFiles = testServices.ktModuleProvider.getModuleStructure().mainModules.flatMap { it.files.filterIsInstance<KtFile>() }
|
||||||
|
|
||||||
|
project.apply {
|
||||||
registerService(KtModuleScopeProvider::class.java, KtModuleScopeProviderImpl())
|
registerService(KtModuleScopeProvider::class.java, KtModuleScopeProviderImpl())
|
||||||
registerService(KotlinAnnotationsResolverFactory::class.java, KotlinStaticAnnotationsResolverFactory(allKtFiles))
|
registerService(KotlinAnnotationsResolverFactory::class.java, KotlinStaticAnnotationsResolverFactory(allKtFiles))
|
||||||
registerService(KotlinDeclarationProviderFactory::class.java, KotlinStaticDeclarationProviderFactory(project, allKtFiles))
|
registerService(KotlinDeclarationProviderFactory::class.java, KotlinStaticDeclarationProviderFactory(project, allKtFiles))
|
||||||
|
|||||||
+3
@@ -30,6 +30,9 @@ object AnalysisApiLibraryBaseTestServiceRegistrar : AnalysisApiTestServiceRegist
|
|||||||
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun registerProjectModelServices(project: MockProject, testServices: TestServices) {
|
||||||
|
}
|
||||||
|
|
||||||
override fun registerApplicationServices(application: MockApplication, testServices: TestServices) {
|
override fun registerApplicationServices(application: MockApplication, testServices: TestServices) {
|
||||||
application.apply {
|
application.apply {
|
||||||
registerService(ClsKotlinBinaryClassCache::class.java)
|
registerService(ClsKotlinBinaryClassCache::class.java)
|
||||||
|
|||||||
+7
-6
@@ -103,9 +103,15 @@ object StandaloneProjectFactory {
|
|||||||
val javaModuleGraph = JavaModuleGraph(javaModuleFinder)
|
val javaModuleGraph = JavaModuleGraph(javaModuleFinder)
|
||||||
|
|
||||||
val allSourceFileRoots = sourceFiles.map { JavaRoot(it.virtualFile, JavaRoot.RootType.SOURCE) }
|
val allSourceFileRoots = sourceFiles.map { JavaRoot(it.virtualFile, JavaRoot.RootType.SOURCE) }
|
||||||
val libraryRoots = getAllBinaryRoots(modules, environment)
|
|
||||||
val jdkRoots = getDefaultJdkModuleRoots(javaModuleFinder, javaModuleGraph)
|
val jdkRoots = getDefaultJdkModuleRoots(javaModuleFinder, javaModuleGraph)
|
||||||
|
|
||||||
|
project.registerService(
|
||||||
|
JavaModuleResolver::class.java,
|
||||||
|
CliJavaModuleResolver(javaModuleGraph, emptyList(), javaModuleFinder.systemModules.toList(), project)
|
||||||
|
)
|
||||||
|
|
||||||
|
val libraryRoots = getAllBinaryRoots(modules, environment)
|
||||||
|
|
||||||
val rootsWithSingleJavaFileRoots = buildList {
|
val rootsWithSingleJavaFileRoots = buildList {
|
||||||
addAll(libraryRoots)
|
addAll(libraryRoots)
|
||||||
addAll(allSourceFileRoots)
|
addAll(allSourceFileRoots)
|
||||||
@@ -148,11 +154,6 @@ object StandaloneProjectFactory {
|
|||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
||||||
project.registerService(
|
|
||||||
JavaModuleResolver::class.java,
|
|
||||||
CliJavaModuleResolver(javaModuleGraph, emptyList(), javaModuleFinder.systemModules.toList(), project)
|
|
||||||
)
|
|
||||||
|
|
||||||
val finderFactory = CliVirtualFileFinderFactory(rootsIndex, false)
|
val finderFactory = CliVirtualFileFinderFactory(rootsIndex, false)
|
||||||
|
|
||||||
project.registerService(MetadataFinderFactory::class.java, finderFactory)
|
project.registerService(MetadataFinderFactory::class.java, finderFactory)
|
||||||
|
|||||||
+3
@@ -23,6 +23,9 @@ object StandaloneModeTestServiceRegistrar : AnalysisApiTestServiceRegistrar() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun registerProjectModelServices(project: MockProject, testServices: TestServices) {
|
||||||
val projectStructureProvider = project.getService(ProjectStructureProvider::class.java)
|
val projectStructureProvider = project.getService(ProjectStructureProvider::class.java)
|
||||||
val binaryModules =
|
val binaryModules =
|
||||||
(projectStructureProvider as? KtStaticModuleProvider)?.projectStructure?.allKtModules()?.filterIsInstance<KtBinaryModule>()
|
(projectStructureProvider as? KtStaticModuleProvider)?.projectStructure?.allKtModules()?.filterIsInstance<KtBinaryModule>()
|
||||||
|
|||||||
+2
-1
@@ -30,8 +30,9 @@ class ProjectStructureInitialisationPreAnalysisHandler(
|
|||||||
configurator.registerApplicationServices(application, testServices)
|
configurator.registerApplicationServices(application, testServices)
|
||||||
createAndRegisterKtModules(moduleStructure, project)
|
createAndRegisterKtModules(moduleStructure, project)
|
||||||
configurator.registerProjectExtensionPoints(project, testServices)
|
configurator.registerProjectExtensionPoints(project, testServices)
|
||||||
testServices.environmentManager.initializeProjectStructure()
|
|
||||||
configurator.registerProjectServices(project, testServices)
|
configurator.registerProjectServices(project, testServices)
|
||||||
|
testServices.environmentManager.initializeProjectStructure()
|
||||||
|
configurator.registerProjectModelServices(project, testServices)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createAndRegisterKtModules(moduleStructure: TestModuleStructure, project: MockProject) {
|
private fun createAndRegisterKtModules(moduleStructure: TestModuleStructure, project: MockProject) {
|
||||||
|
|||||||
+4
@@ -57,6 +57,10 @@ abstract class AnalysisApiTestConfigurator {
|
|||||||
serviceRegistrars.forEach { it.registerProjectServices(project, testServices) }
|
serviceRegistrars.forEach { it.registerProjectServices(project, testServices) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun registerProjectModelServices(project: MockProject, testServices: TestServices) {
|
||||||
|
serviceRegistrars.forEach { it.registerProjectModelServices(project, testServices) }
|
||||||
|
}
|
||||||
|
|
||||||
fun registerApplicationServices(application: MockApplication, testServices: TestServices) {
|
fun registerApplicationServices(application: MockApplication, testServices: TestServices) {
|
||||||
ApplicationServiceRegistrar.register(application, serviceRegistrars, testServices)
|
ApplicationServiceRegistrar.register(application, serviceRegistrars, testServices)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -10,9 +10,11 @@ import com.intellij.mock.MockProject
|
|||||||
import org.jetbrains.kotlin.test.services.TestServices
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
|
||||||
abstract class AnalysisApiTestServiceRegistrar {
|
abstract class AnalysisApiTestServiceRegistrar {
|
||||||
|
abstract fun registerApplicationServices(application: MockApplication, testServices: TestServices)
|
||||||
|
|
||||||
abstract fun registerProjectExtensionPoints(project: MockProject, testServices: TestServices)
|
abstract fun registerProjectExtensionPoints(project: MockProject, testServices: TestServices)
|
||||||
|
|
||||||
abstract fun registerProjectServices(project: MockProject, testServices: TestServices)
|
abstract fun registerProjectServices(project: MockProject, testServices: TestServices)
|
||||||
|
|
||||||
abstract fun registerApplicationServices(application: MockApplication, testServices: TestServices)
|
abstract fun registerProjectModelServices(project: MockProject, testServices: TestServices)
|
||||||
}
|
}
|
||||||
+4
-1
@@ -41,7 +41,7 @@ object AnalysisApiFirTestServiceRegistrar : AnalysisApiTestServiceRegistrar() {
|
|||||||
FirExtensionRegistrarAdapter.registerExtensionPoint(project)
|
FirExtensionRegistrarAdapter.registerExtensionPoint(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(TestInfrastructureInternals::class, KtAnalysisApiInternals::class)
|
@OptIn(KtAnalysisApiInternals::class)
|
||||||
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
||||||
project.apply {
|
project.apply {
|
||||||
registerService(KtAnalysisSessionProvider::class.java, KtFirAnalysisSessionProvider(this))
|
registerService(KtAnalysisSessionProvider::class.java, KtFirAnalysisSessionProvider(this))
|
||||||
@@ -56,7 +56,10 @@ object AnalysisApiFirTestServiceRegistrar : AnalysisApiTestServiceRegistrar() {
|
|||||||
registerService(ReadWriteAccessChecker::class.java, ReadWriteAccessCheckerFirImpl())
|
registerService(ReadWriteAccessChecker::class.java, ReadWriteAccessCheckerFirImpl())
|
||||||
registerService(KotlinReferenceProviderContributor::class.java, KotlinFirReferenceContributor::class.java)
|
registerService(KotlinReferenceProviderContributor::class.java, KotlinFirReferenceContributor::class.java)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(TestInfrastructureInternals::class)
|
||||||
|
override fun registerProjectModelServices(project: MockProject, testServices: TestServices) {
|
||||||
with(PsiElementFinder.EP.getPoint(project)) {
|
with(PsiElementFinder.EP.getPoint(project)) {
|
||||||
registerExtension(JavaElementFinder(project), testServices.testConfiguration.rootDisposable)
|
registerExtension(JavaElementFinder(project), testServices.testConfiguration.rootDisposable)
|
||||||
registerExtension(PsiElementFinderImpl(project), testServices.testConfiguration.rootDisposable)
|
registerExtension(PsiElementFinderImpl(project), testServices.testConfiguration.rootDisposable)
|
||||||
|
|||||||
+3
-1
@@ -15,7 +15,9 @@ object AnalysisApiSymbolLightClassesDecompiledTestServiceRegistrar : AnalysisApi
|
|||||||
override fun registerProjectExtensionPoints(project: MockProject, testServices: TestServices) {
|
override fun registerProjectExtensionPoints(project: MockProject, testServices: TestServices) {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
override fun registerProjectServices(project: MockProject, testServices: TestServices) {}
|
||||||
|
|
||||||
|
override fun registerProjectModelServices(project: MockProject, testServices: TestServices) {
|
||||||
project.apply {
|
project.apply {
|
||||||
registerService(ClsJavaStubByVirtualFileCache::class.java)
|
registerService(ClsJavaStubByVirtualFileCache::class.java)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user