[AA] Simplify prepareFilesInModule with KtTestModule

^KT-65960
This commit is contained in:
Marco Pennekamp
2024-02-20 21:02:11 +01:00
committed by Space Team
parent 6cc414bdfd
commit dc0f498b15
4 changed files with 14 additions and 13 deletions
@@ -7,11 +7,11 @@ package org.jetbrains.kotlin.analysis.api.fe10.test.configurator
import com.intellij.openapi.Disposable
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.analysis.api.impl.base.test.configurators.AnalysisApiBaseTestServiceRegistrar
import org.jetbrains.kotlin.analysis.api.impl.base.test.configurators.AnalysisApiDecompiledCodeTestServiceRegistrar
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtModuleFactory
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtSourceModuleFactory
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModule
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModuleProjectStructure
import org.jetbrains.kotlin.analysis.test.framework.project.structure.TestModuleStructureFactory
import org.jetbrains.kotlin.analysis.test.framework.services.configuration.AnalysisApiBinaryLibraryIndexingMode
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendK
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestModuleStructure
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.compilerConfigurationProvider
@@ -67,12 +66,13 @@ object AnalysisApiFe10TestConfigurator : AnalysisApiTestConfigurator() {
return TestModuleStructureFactory.createProjectStructureByTestStructure(moduleStructure, testServices, project)
}
override fun prepareFilesInModule(files: List<PsiFile>, module: TestModule, testServices: TestServices) {
override fun prepareFilesInModule(ktTestModule: KtTestModule, testServices: TestServices) {
val testModule = ktTestModule.testModule
val compilerConfigurationProvider = testServices.compilerConfigurationProvider
val compilerConfiguration = compilerConfigurationProvider.getCompilerConfiguration(module)
val project = compilerConfigurationProvider.getProject(module)
val packageProviderFactory = compilerConfigurationProvider.getPackagePartProviderFactory(module)
JvmResolveUtil.analyze(project, files.filterIsInstance<KtFile>(), compilerConfiguration, packageProviderFactory)
val compilerConfiguration = compilerConfigurationProvider.getCompilerConfiguration(testModule)
val project = compilerConfigurationProvider.getProject(testModule)
val packageProviderFactory = compilerConfigurationProvider.getPackagePartProviderFactory(testModule)
JvmResolveUtil.analyze(project, ktTestModule.files.filterIsInstance<KtFile>(), compilerConfiguration, packageProviderFactory)
}
override fun computeTestDataPath(path: Path): Path {
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.analysis.test.framework.AnalysisApiTestDirectives
import org.jetbrains.kotlin.analysis.test.framework.TestWithDisposable
import org.jetbrains.kotlin.analysis.test.framework.project.structure.getKtFiles
import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModuleProvider
import org.jetbrains.kotlin.analysis.test.framework.project.structure.mainModules
import org.jetbrains.kotlin.analysis.test.framework.services.ExpressionMarkerProvider
import org.jetbrains.kotlin.analysis.test.framework.services.ExpressionMarkersSourceFilePreprocessor
import org.jetbrains.kotlin.analysis.test.framework.services.expressionMarkerProvider
@@ -350,9 +351,8 @@ abstract class AbstractAnalysisApiBasedTest : TestWithDisposable() {
testConfiguration.preAnalysisHandlers.forEach { preprocessor -> preprocessor.preprocessModuleStructure(moduleStructure) }
testConfiguration.preAnalysisHandlers.forEach { preprocessor -> preprocessor.prepareSealedClassInheritors(moduleStructure) }
moduleStructure.modules.forEach { module ->
val files = testServices.ktModuleProvider.getModuleFiles(module)
configurator.prepareFilesInModule(files, module, testServices)
testServices.ktModuleProvider.mainModules.forEach { ktTestModule ->
configurator.prepareFilesInModule(ktTestModule, testServices)
}
}
@@ -51,6 +51,8 @@ class AnalysisApiKtModuleProviderImpl(
fun AnalysisApiKtModuleProvider.getKtFiles(module: TestModule): List<KtFile> = getModuleFiles(module).filterIsInstance<KtFile>()
val AnalysisApiKtModuleProvider.mainModules: List<KtTestModule> get() = getModuleStructure().mainModules
fun TestServices.allKtFiles(): List<KtFile> = moduleStructure.modules.flatMap(ktModuleProvider::getKtFiles)
val TestServices.ktModuleProvider: AnalysisApiKtModuleProvider by TestServices.testServiceAccessor()
@@ -11,10 +11,8 @@ import com.intellij.openapi.Disposable
import com.intellij.openapi.application.Application
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Key
import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.psi.NotNullableUserDataProperty
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestModuleStructure
import org.jetbrains.kotlin.test.services.TestServices
import java.nio.file.Path
@@ -23,6 +21,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock
import kotlin.concurrent.withLock
import kotlin.reflect.KClass
import org.jetbrains.kotlin.analysis.providers.KotlinGlobalModificationService
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModule
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModuleProjectStructure
abstract class AnalysisApiTestConfigurator {
@@ -36,7 +35,7 @@ abstract class AnalysisApiTestConfigurator {
abstract val serviceRegistrars: List<AnalysisApiTestServiceRegistrar>
open fun prepareFilesInModule(files: List<PsiFile>, module: TestModule, testServices: TestServices) {}
open fun prepareFilesInModule(ktTestModule: KtTestModule, testServices: TestServices) {}
open fun doGlobalModuleStateModification(project: Project) {
KotlinGlobalModificationService.getInstance(project).publishGlobalModuleStateModification()