From 2060709c031d715544363e1289277d226e7a6816 Mon Sep 17 00:00:00 2001 From: Marco Pennekamp Date: Tue, 20 Feb 2024 20:37:23 +0100 Subject: [PATCH] [AA] Turn `KtModuleWithFiles` into `KtTestModule` (AA test framework) - `KtModuleWithFiles` isn't actually used in a production Standalone API context, but it was exposed via `analysis-api-standalone-base`. In current production usages, the project structure is built with the module builder DSL. - Hence, `KtModuleWithFiles` is only relevant for tests. This commit moves `KtModuleWithFiles` to the Analysis API test framework and renames it to `KtTestModule`. This removes any risk that an outside user could start using `KtModuleWithFiles` and completely uncouples the test project structure from production APIs. - In addition, we can add the `TestModule` to `KtTestModule`, allowing tests to quickly access the original test module, for example to check the test module kind. - The commit also removes the data class status of `KtTestModule` and `KtTestModuleProjectStructure` to avoid issues with destructuring when properties are added or removed. ^KT-65960 --- .../AnalysisApiFe10TestConfigurator.kt | 4 +- .../project/structure/KtModuleWithFiles.kt | 34 ------------- .../StandaloneModeConfigurator.kt | 4 +- ...daloneModeLibraryBinaryTestConfigurator.kt | 4 +- .../AnalysisApiKtModuleProviderImpl.kt | 21 ++++---- .../structure/KtCodeFragmentModuleFactory.kt | 7 ++- .../structure/KtLibraryBinaryModuleFactory.kt | 8 +-- .../structure/KtLibrarySourceModuleFactory.kt | 9 ++-- .../project/structure/KtModuleFactory.kt | 9 ++-- .../structure/KtScriptModuleFactory.kt | 7 ++- .../structure/KtSourceModuleFactory.kt | 7 ++- .../project/structure/KtTestModule.kt | 51 +++++++++++++++++++ .../structure/TestModuleStructureFactory.kt | 16 +++--- .../services/AnalysisApiEnvironmentManager.kt | 4 +- .../KtTestProjectStructureProvider.kt | 4 +- .../AnalysisApiTestConfigurator.kt | 8 ++- ...irLowLevelCompilerBasedTestConfigurator.kt | 10 ++-- ...ysisApiFirLibraryBinaryTestConfigurator.kt | 4 +- ...ysisApiFirLibrarySourceTestConfigurator.kt | 4 +- ...sApiFirOutOfContentRootTestConfigurator.kt | 14 ++--- ...nalysisApiFirSourceLikeTestConfigurator.kt | 4 +- ...lysisApiFirStdlibSourceTestConfigurator.kt | 6 +-- ...lLightClassesDecompiledTestConfigurator.kt | 4 +- 23 files changed, 128 insertions(+), 115 deletions(-) delete mode 100644 analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/KtModuleWithFiles.kt create mode 100644 analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtTestModule.kt diff --git a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/fe10/test/configurator/AnalysisApiFe10TestConfigurator.kt b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/fe10/test/configurator/AnalysisApiFe10TestConfigurator.kt index b88e72269bd..ee6996881ed 100644 --- a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/fe10/test/configurator/AnalysisApiFe10TestConfigurator.kt +++ b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/fe10/test/configurator/AnalysisApiFe10TestConfigurator.kt @@ -10,9 +10,9 @@ 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.api.standalone.base.project.structure.KtModuleProjectStructure 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.KtTestModuleProjectStructure import org.jetbrains.kotlin.analysis.test.framework.project.structure.TestModuleStructureFactory import org.jetbrains.kotlin.analysis.test.framework.services.configuration.AnalysisApiBinaryLibraryIndexingMode import org.jetbrains.kotlin.analysis.test.framework.services.configuration.AnalysisApiJvmEnvironmentConfigurator @@ -63,7 +63,7 @@ object AnalysisApiFe10TestConfigurator : AnalysisApiTestConfigurator() { moduleStructure: TestModuleStructure, testServices: TestServices, project: Project, - ): KtModuleProjectStructure { + ): KtTestModuleProjectStructure { return TestModuleStructureFactory.createProjectStructureByTestStructure(moduleStructure, testServices, project) } diff --git a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/KtModuleWithFiles.kt b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/KtModuleWithFiles.kt deleted file mode 100644 index a0b1e59bcd7..00000000000 --- a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/KtModuleWithFiles.kt +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.analysis.api.standalone.base.project.structure - -import com.intellij.psi.PsiFile -import com.intellij.psi.PsiFileSystemItem -import com.intellij.psi.PsiJavaFile -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory.findJvmRootsForJavaFiles -import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule -import org.jetbrains.kotlin.analysis.project.structure.KtModule - -data class KtModuleProjectStructure( - val mainModules: List, - val binaryModules: Iterable, -) { - fun allKtModules(): List = buildList { - mainModules.mapTo(this) { it.ktModule } - addAll(binaryModules) - } - - fun allSourceFiles(): List = buildList { - val files = mainModules.flatMap { it.files } - addAll(files) - addAll(findJvmRootsForJavaFiles(files.filterIsInstance())) - } -} - -data class KtModuleWithFiles( - val ktModule: KtModule, - val files: List -) \ No newline at end of file diff --git a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/configurators/StandaloneModeConfigurator.kt b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/configurators/StandaloneModeConfigurator.kt index 190e4f887a0..24e3fb8e0b6 100644 --- a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/configurators/StandaloneModeConfigurator.kt +++ b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/configurators/StandaloneModeConfigurator.kt @@ -7,8 +7,8 @@ package org.jetbrains.kotlin.analysis.api.standalone.fir.test.configurators import com.intellij.openapi.Disposable import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirSourceTestConfigurator +import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModuleProjectStructure import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestServiceRegistrar import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.services.TestModuleStructure @@ -32,7 +32,7 @@ object StandaloneModeConfigurator : StandaloneModeConfiguratorBase() { moduleStructure: TestModuleStructure, testServices: TestServices, project: Project - ): KtModuleProjectStructure { + ): KtTestModuleProjectStructure { return sourceConfigurator.createModules(moduleStructure, testServices, project) } } diff --git a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/configurators/StandaloneModeLibraryBinaryTestConfigurator.kt b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/configurators/StandaloneModeLibraryBinaryTestConfigurator.kt index 1b0e50df253..ffcf306c503 100644 --- a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/configurators/StandaloneModeLibraryBinaryTestConfigurator.kt +++ b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/configurators/StandaloneModeLibraryBinaryTestConfigurator.kt @@ -9,11 +9,11 @@ import com.intellij.openapi.Disposable import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.api.impl.base.test.configurators.AnalysisApiBaseTestServiceRegistrar import org.jetbrains.kotlin.analysis.api.impl.base.test.configurators.AnalysisApiLibraryBaseTestServiceRegistrar -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AnalysisApiFirTestServiceRegistrar import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.configureOptionalTestCompilerPlugin import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtLibraryBinaryModuleFactory import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtModuleFactory +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.AnalysisApiJvmEnvironmentConfigurator import org.jetbrains.kotlin.analysis.test.framework.services.libraries.DispatchingTestModuleCompiler @@ -58,7 +58,7 @@ object StandaloneModeLibraryBinaryTestConfigurator : StandaloneModeConfiguratorB moduleStructure: TestModuleStructure, testServices: TestServices, project: Project, - ): KtModuleProjectStructure { + ): KtTestModuleProjectStructure { return TestModuleStructureFactory.createProjectStructureByTestStructure(moduleStructure, testServices, project) } } diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/AnalysisApiKtModuleProviderImpl.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/AnalysisApiKtModuleProviderImpl.kt index 6901d69d76f..84452a9c867 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/AnalysisApiKtModuleProviderImpl.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/AnalysisApiKtModuleProviderImpl.kt @@ -6,8 +6,6 @@ package org.jetbrains.kotlin.analysis.test.framework.project.structure import com.intellij.psi.PsiFile -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.analysis.project.structure.* import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.model.TestModule @@ -17,20 +15,21 @@ import org.jetbrains.kotlin.test.services.moduleStructure abstract class AnalysisApiKtModuleProvider : TestService { protected abstract val testServices: TestServices + abstract fun getModule(moduleName: String): KtModule abstract fun getModuleFiles(module: TestModule): List - abstract fun registerProjectStructure(modules: KtModuleProjectStructure) + abstract fun registerProjectStructure(modules: KtTestModuleProjectStructure) - abstract fun getModuleStructure(): KtModuleProjectStructure + abstract fun getModuleStructure(): KtTestModuleProjectStructure } class AnalysisApiKtModuleProviderImpl( override val testServices: TestServices, ) : AnalysisApiKtModuleProvider() { - private lateinit var modulesStructure: KtModuleProjectStructure - private lateinit var modulesByName: Map + private lateinit var modulesStructure: KtTestModuleProjectStructure + private lateinit var modulesByName: Map override fun getModule(moduleName: String): KtModule { return modulesByName.getValue(moduleName).ktModule @@ -39,7 +38,7 @@ class AnalysisApiKtModuleProviderImpl( override fun getModuleFiles(module: TestModule): List = (modulesByName[module.name] ?: modulesByName.getValue(module.files.single().name)).files - override fun registerProjectStructure(modules: KtModuleProjectStructure) { + override fun registerProjectStructure(modules: KtTestModuleProjectStructure) { require(!this::modulesStructure.isInitialized) require(!this::modulesByName.isInitialized) @@ -47,7 +46,7 @@ class AnalysisApiKtModuleProviderImpl( this.modulesByName = modulesStructure.mainModules.associateByName() } - override fun getModuleStructure(): KtModuleProjectStructure = modulesStructure + override fun getModuleStructure(): KtTestModuleProjectStructure = modulesStructure } fun AnalysisApiKtModuleProvider.getKtFiles(module: TestModule): List = getModuleFiles(module).filterIsInstance() @@ -56,9 +55,9 @@ fun TestServices.allKtFiles(): List = moduleStructure.modules.flatMap(kt val TestServices.ktModuleProvider: AnalysisApiKtModuleProvider by TestServices.testServiceAccessor() -fun List.associateByName(): Map { - return associateBy { (ktModule, _) -> - when (ktModule) { +fun List.associateByName(): Map { + return associateBy { ktTestModule -> + when (val ktModule = ktTestModule.ktModule) { is KtModuleByCompilerConfiguration -> ktModule.moduleName is KtSourceModule -> ktModule.moduleName is KtLibraryModule -> ktModule.libraryName diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtCodeFragmentModuleFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtCodeFragmentModuleFactory.kt index 785b807c0c0..9f9bfbe63b4 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtCodeFragmentModuleFactory.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtCodeFragmentModuleFactory.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.analysis.test.framework.project.structure import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.analysis.project.structure.DanglingFileResolutionMode import org.jetbrains.kotlin.analysis.project.structure.impl.KtDanglingFileModuleImpl import org.jetbrains.kotlin.analysis.test.framework.services.expressionMarkerProvider @@ -28,11 +27,11 @@ import java.nio.file.Path object KtCodeFragmentModuleFactory : KtModuleFactory { override fun createModule( testModule: TestModule, - contextModule: KtModuleWithFiles?, + contextModule: KtTestModule?, dependencyPaths: Collection, testServices: TestServices, project: Project, - ): KtModuleWithFiles { + ): KtTestModule { requireNotNull(contextModule) { "Code fragment requires a context module" } val testFile = testModule.files.singleOrNull() ?: error("A single file is expected for a code fragment module") @@ -69,7 +68,7 @@ object KtCodeFragmentModuleFactory : KtModuleFactory { DanglingFileResolutionMode.PREFER_SELF ) - return KtModuleWithFiles(module, listOf(codeFragment)) + return KtTestModule(testModule, module, listOf(codeFragment)) } private fun findContextElement(file: KtFile, testServices: TestServices): KtElement? { diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtLibraryBinaryModuleFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtLibraryBinaryModuleFactory.kt index af1846121be..ec7e13053af 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtLibraryBinaryModuleFactory.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtLibraryBinaryModuleFactory.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.analysis.test.framework.project.structure import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory import org.jetbrains.kotlin.analysis.test.framework.services.environmentManager import org.jetbrains.kotlin.analysis.test.framework.services.libraries.compiledLibraryProvider @@ -21,15 +20,16 @@ import java.nio.file.Path object KtLibraryBinaryModuleFactory : KtModuleFactory { override fun createModule( testModule: TestModule, - contextModule: KtModuleWithFiles?, + contextModule: KtTestModule?, dependencyPaths: Collection, testServices: TestServices, project: Project, - ): KtModuleWithFiles { + ): KtTestModule { val library = testServices.compiledLibraryProvider.compileToLibrary(testModule, dependencyPaths).artifact val decompiledFiles = testServices.testModuleDecompiler.getAllPsiFilesFromLibrary(library, project) - return KtModuleWithFiles( + return KtTestModule( + testModule, KtLibraryModuleImpl( testModule.name, testModule.targetPlatform, diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtLibrarySourceModuleFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtLibrarySourceModuleFactory.kt index 5fcf7ef6fc3..280a05def4c 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtLibrarySourceModuleFactory.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtLibrarySourceModuleFactory.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.analysis.test.framework.project.structure import com.intellij.openapi.project.Project import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analysis.api.impl.base.util.LibraryUtils -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory import org.jetbrains.kotlin.analysis.test.framework.services.environmentManager import org.jetbrains.kotlin.analysis.test.framework.services.libraries.compiledLibraryProvider @@ -24,11 +23,11 @@ import java.nio.file.Path object KtLibrarySourceModuleFactory : KtModuleFactory { override fun createModule( testModule: TestModule, - contextModule: KtModuleWithFiles?, + contextModule: KtTestModule?, dependencyPaths: Collection, testServices: TestServices, project: Project, - ): KtModuleWithFiles { + ): KtTestModule { Assume.assumeFalse("Compilation of multi-platform libraries is not supported", testModule.targetPlatform.isMultiPlatform()) val (libraryJar, librarySourcesJar) = testServices.compiledLibraryProvider.compileToLibrary(testModule) @@ -51,7 +50,7 @@ fun createKtLibrarySourceModule( testModule: TestModule, project: Project, testServices: TestServices, -): KtModuleWithFiles { +): KtTestModule { val libraryKtModule = KtLibraryModuleImpl( testModule.name, testModule.targetPlatform, @@ -74,5 +73,5 @@ fun createKtLibrarySourceModule( ) libraryKtModule.librarySources = librarySourceKtModule - return KtModuleWithFiles(librarySourceKtModule, decompiledPsiFilesFromSourceJar) + return KtTestModule(testModule, librarySourceKtModule, decompiledPsiFilesFromSourceJar) } diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtModuleFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtModuleFactory.kt index 110ebb5fed3..74f4186c85b 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtModuleFactory.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtModuleFactory.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.analysis.test.framework.project.structure import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind import org.jetbrains.kotlin.analysis.test.framework.test.configurators.moduleKind import org.jetbrains.kotlin.test.model.TestModule @@ -19,18 +18,18 @@ fun interface KtModuleFactory : TestService { * Creates a [KtModule](org.jetbrains.kotlin.analysis.project.structure.KtModule) for the given [testModule]. * * @param contextModule a module to use as a context module. Some kinds of modules (such as dangling file modules) require a - * context module. Modules representing code fragments also require a context element – that is why the [KtModuleWithFiles] is passed, - * instead of a plain (KtModule)[org.jetbrains.kotlin.analysis.project.structure.KtModule]. + * context module. Modules representing code fragments also require a context element. That is why the [KtTestModule] is passed + * instead of a plain [KtModule][org.jetbrains.kotlin.analysis.project.structure.KtModule]. * * @param dependencyPaths Paths of directories containing dependency libraries. The paths will be set as class paths for compilation. */ fun createModule( testModule: TestModule, - contextModule: KtModuleWithFiles?, + contextModule: KtTestModule?, dependencyPaths: Collection, testServices: TestServices, project: Project, - ): KtModuleWithFiles + ): KtTestModule } private val TestServices.ktModuleFactory: KtModuleFactory by TestServices.testServiceAccessor() diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtScriptModuleFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtScriptModuleFactory.kt index 70a9dc27b40..0a81c4f33bd 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtScriptModuleFactory.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtScriptModuleFactory.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.analysis.test.framework.project.structure import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.TestServices @@ -18,11 +17,11 @@ import java.nio.file.Path object KtScriptModuleFactory : KtModuleFactory { override fun createModule( testModule: TestModule, - contextModule: KtModuleWithFiles?, + contextModule: KtTestModule?, dependencyPaths: Collection, testServices: TestServices, project: Project, - ): KtModuleWithFiles { + ): KtTestModule { val ktFile = TestModuleStructureFactory.createSourcePsiFiles(testModule, testServices, project).single() as KtFile val module = KtScriptModuleImpl( ktFile, @@ -31,6 +30,6 @@ object KtScriptModuleFactory : KtModuleFactory { project, ) - return KtModuleWithFiles(module, listOf(ktFile)) + return KtTestModule(testModule, module, listOf(ktFile)) } } diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtSourceModuleFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtSourceModuleFactory.kt index 61dbd983428..c6b85bc454e 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtSourceModuleFactory.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtSourceModuleFactory.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.analysis.test.framework.project.structure import com.intellij.openapi.project.Project import com.intellij.psi.search.GlobalSearchScope -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.TestServices import java.nio.file.Path @@ -18,11 +17,11 @@ import java.nio.file.Path object KtSourceModuleFactory : KtModuleFactory { override fun createModule( testModule: TestModule, - contextModule: KtModuleWithFiles?, + contextModule: KtTestModule?, dependencyPaths: Collection, testServices: TestServices, project: Project, - ): KtModuleWithFiles { + ): KtTestModule { val psiFiles = TestModuleStructureFactory.createSourcePsiFiles(testModule, testServices, project) val module = KtSourceModuleImpl( @@ -33,6 +32,6 @@ object KtSourceModuleFactory : KtModuleFactory { GlobalSearchScope.filesScope(project, psiFiles.mapTo(mutableSetOf()) { it.virtualFile }), ) - return KtModuleWithFiles(module, psiFiles) + return KtTestModule(testModule, module, psiFiles) } } diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtTestModule.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtTestModule.kt new file mode 100644 index 00000000000..1b52f8869b5 --- /dev/null +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/KtTestModule.kt @@ -0,0 +1,51 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.test.framework.project.structure + +import com.intellij.psi.PsiFile +import com.intellij.psi.PsiFileSystemItem +import com.intellij.psi.PsiJavaFile +import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory.findJvmRootsForJavaFiles +import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule +import org.jetbrains.kotlin.analysis.project.structure.KtModule +import org.jetbrains.kotlin.test.model.TestModule +import kotlin.collections.addAll +import kotlin.collections.filterIsInstance +import kotlin.collections.flatMap +import kotlin.collections.mapTo + +/** + * [KtTestModule] describes a [KtModule] originating from a [TestModule] with any number of associated [PsiFile]s. It is used to describe + * the module structure configured by Analysis API tests. + */ +class KtTestModule( + val testModule: TestModule, + val ktModule: KtModule, + val files: List, +) + +/** + * A project structure of [KtTestModule]s, and additional [KtBinaryModule]s not originating from test modules. This project structure + * is created by [AnalysisApiTestConfigurator.createModules][org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator.createModules]. + * + * [mainModules] are created from the configured [TestModule]s and must be in the same order as + * [TestModuleStructure.modules][org.jetbrains.kotlin.test.services.TestModuleStructure.modules]. + */ +class KtTestModuleProjectStructure( + val mainModules: List, + val binaryModules: Iterable, +) { + fun allKtModules(): List = buildList { + mainModules.mapTo(this) { it.ktModule } + addAll(binaryModules) + } + + fun allSourceFiles(): List = buildList { + val files = mainModules.flatMap { it.files } + addAll(files) + addAll(findJvmRootsForJavaFiles(files.filterIsInstance())) + } +} diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/TestModuleStructureFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/TestModuleStructureFactory.kt index 07c34040695..0653c31f8c9 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/TestModuleStructureFactory.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/project/structure/TestModuleStructureFactory.kt @@ -9,8 +9,6 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiFile import com.intellij.psi.PsiManager import com.intellij.psi.search.GlobalSearchScope -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule import org.jetbrains.kotlin.analysis.project.structure.KtDanglingFileModule @@ -40,7 +38,7 @@ import kotlin.io.path.nameWithoutExtension private typealias LibraryCache = MutableMap, KtBinaryModule> -private typealias ModulesByName = Map +private typealias ModulesByName = Map /** * A function to run the topological sort (or post-order sort) for [TestModule]s based on the dependency graph. @@ -72,7 +70,7 @@ object TestModuleStructureFactory { moduleStructure: TestModuleStructure, testServices: TestServices, project: Project - ): KtModuleProjectStructure { + ): KtTestModuleProjectStructure { val modules = createModules(moduleStructure, testServices, project) val modulesByName = modules.associateByName() @@ -86,7 +84,7 @@ object TestModuleStructureFactory { ktModule.addDependencies(testModule, testServices, modulesByName, libraryCache) } - return KtModuleProjectStructure(modules, libraryCache.values) + return KtTestModuleProjectStructure(modules, libraryCache.values) } /** @@ -103,11 +101,11 @@ object TestModuleStructureFactory { moduleStructure: TestModuleStructure, testServices: TestServices, project: Project, - ): List { + ): List { val moduleCount = moduleStructure.modules.size - val result = ArrayList(moduleCount) + val result = ArrayList(moduleCount) - val processedModules = HashMap(moduleCount) + val processedModules = HashMap(moduleCount) val processedDependencies = mutableMapOf>() for (testModule in sortInDependencyPostOrder(moduleStructure.modules)) { @@ -134,7 +132,7 @@ object TestModuleStructureFactory { return result } - private fun ModulesByName.getByTestModule(testModule: TestModule): KtModuleWithFiles = + private fun ModulesByName.getByTestModule(testModule: TestModule): KtTestModule = this[testModule.name] ?: this.getValue(testModule.files.single().name) /** diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/AnalysisApiEnvironmentManager.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/AnalysisApiEnvironmentManager.kt index 1237ffca510..4bb77971851 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/AnalysisApiEnvironmentManager.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/AnalysisApiEnvironmentManager.kt @@ -54,7 +54,7 @@ class AnalysisApiEnvironmentManagerImpl( } override fun initializeProjectStructure() { - val ktModuleProjectStructure = testServices.ktModuleProvider.getModuleStructure() + val ktTestModuleProjectStructure = testServices.ktModuleProvider.getModuleStructure() val useSiteModule = testServices.moduleStructure.modules.first() val useSiteCompilerConfiguration = testServices.compilerConfigurationProvider.getCompilerConfiguration(useSiteModule) val builtinsModule = KtBuiltinsModule( @@ -67,7 +67,7 @@ class AnalysisApiEnvironmentManagerImpl( StandaloneProjectFactory.registerServicesForProjectEnvironment( _projectEnvironment, - KtTestProjectStructureProvider(globalLanguageVersionSettings, builtinsModule, ktModuleProjectStructure), + KtTestProjectStructureProvider(globalLanguageVersionSettings, builtinsModule, ktTestModuleProjectStructure), useSiteCompilerConfiguration.languageVersionSettings, useSiteCompilerConfiguration.get(JVMConfigurationKeys.JDK_HOME)?.toPath(), ) diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/KtTestProjectStructureProvider.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/KtTestProjectStructureProvider.kt index 6bb9d70a3c8..e7273f3e7c1 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/KtTestProjectStructureProvider.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/KtTestProjectStructureProvider.kt @@ -8,9 +8,9 @@ package org.jetbrains.kotlin.analysis.test.framework.services import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import com.intellij.psi.PsiFileSystemItem -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtStaticProjectStructureProvider import org.jetbrains.kotlin.analysis.project.structure.* +import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModuleProjectStructure import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.psi.psiUtil.contains import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments class KtTestProjectStructureProvider( override val globalLanguageVersionSettings: LanguageVersionSettings, private val builtinsModule: KtBuiltinsModule, - private val projectStructure: KtModuleProjectStructure, + private val projectStructure: KtTestModuleProjectStructure, ) : KtStaticProjectStructureProvider() { override fun getNotUnderContentRootModule(project: Project): KtNotUnderContentRootModule { error("Not-under content root modules most be initialized explicitly in tests") diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/test/configurators/AnalysisApiTestConfigurator.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/test/configurators/AnalysisApiTestConfigurator.kt index a725b3cb18e..423330f101e 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/test/configurators/AnalysisApiTestConfigurator.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/test/configurators/AnalysisApiTestConfigurator.kt @@ -12,7 +12,6 @@ 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.analysis.api.standalone.base.project.structure.KtModuleProjectStructure import org.jetbrains.kotlin.psi.NotNullableUserDataProperty import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.model.TestModule @@ -24,6 +23,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.KtTestModuleProjectStructure abstract class AnalysisApiTestConfigurator { open val testPrefix: String? get() = null @@ -44,7 +44,11 @@ abstract class AnalysisApiTestConfigurator { open fun computeTestDataPath(path: Path): Path = path - abstract fun createModules(moduleStructure: TestModuleStructure, testServices: TestServices, project: Project): KtModuleProjectStructure + abstract fun createModules( + moduleStructure: TestModuleStructure, + testServices: TestServices, + project: Project, + ): KtTestModuleProjectStructure fun registerProjectExtensionPoints(project: MockProject, testServices: TestServices) { serviceRegistrars.forEach { it.registerProjectExtensionPoints(project, testServices) } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/FirLowLevelCompilerBasedTestConfigurator.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/FirLowLevelCompilerBasedTestConfigurator.kt index 73060688c13..e20b24c8fad 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/FirLowLevelCompilerBasedTestConfigurator.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/base/FirLowLevelCompilerBasedTestConfigurator.kt @@ -10,12 +10,12 @@ import com.intellij.openapi.project.Project 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.api.impl.base.test.configurators.AnalysisApiScriptTestServiceRegistrar -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule import org.jetbrains.kotlin.analysis.project.structure.allDirectDependenciesOfType import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtScriptModuleByCompilerConfiguration import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtSourceModuleByCompilerConfiguration +import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModuleProjectStructure +import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModule import org.jetbrains.kotlin.analysis.test.framework.project.structure.TestModuleStructureFactory import org.jetbrains.kotlin.analysis.test.framework.services.configuration.AnalysisApiBinaryLibraryIndexingMode import org.jetbrains.kotlin.analysis.test.framework.services.configuration.AnalysisApiIndexingConfiguration @@ -48,7 +48,7 @@ object FirLowLevelCompilerBasedTestConfigurator : AnalysisApiTestConfigurator() moduleStructure: TestModuleStructure, testServices: TestServices, project: Project - ): KtModuleProjectStructure { + ): KtTestModuleProjectStructure { val mainModules = moduleStructure.modules.map { testModule -> val files = TestModuleStructureFactory.createSourcePsiFiles(testModule, testServices, project) val scriptFile = files.singleOrNull() as? KtFile @@ -58,10 +58,10 @@ object FirLowLevelCompilerBasedTestConfigurator : AnalysisApiTestConfigurator() KtSourceModuleByCompilerConfiguration(project, testModule, files, testServices) } - KtModuleWithFiles(ktModule, files) + KtTestModule(testModule, ktModule, files) } - return KtModuleProjectStructure( + return KtTestModuleProjectStructure( mainModules = mainModules, binaryModules = mainModules.asSequence().flatMap { it.ktModule.allDirectDependenciesOfType() }.asIterable(), ) diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirLibraryBinaryTestConfigurator.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirLibraryBinaryTestConfigurator.kt index 1e926e844a8..86cbd06372d 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirLibraryBinaryTestConfigurator.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirLibraryBinaryTestConfigurator.kt @@ -10,11 +10,11 @@ import com.intellij.openapi.project.Project 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.api.impl.base.test.configurators.AnalysisApiLibraryBaseTestServiceRegistrar -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AnalysisApiFirTestServiceRegistrar import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.configureOptionalTestCompilerPlugin import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtLibraryBinaryModuleFactory import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtModuleFactory +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 import org.jetbrains.kotlin.analysis.test.framework.services.configuration.AnalysisApiJvmEnvironmentConfigurator @@ -58,7 +58,7 @@ object AnalysisApiFirLibraryBinaryTestConfigurator : AnalysisApiTestConfigurator moduleStructure: TestModuleStructure, testServices: TestServices, project: Project - ): KtModuleProjectStructure { + ): KtTestModuleProjectStructure { return TestModuleStructureFactory.createProjectStructureByTestStructure(moduleStructure, testServices, project) } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirLibrarySourceTestConfigurator.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirLibrarySourceTestConfigurator.kt index ab99df7e3db..4a0e6510b35 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirLibrarySourceTestConfigurator.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirLibrarySourceTestConfigurator.kt @@ -10,11 +10,11 @@ import com.intellij.openapi.project.Project 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.api.impl.base.test.configurators.AnalysisApiLibraryBaseTestServiceRegistrar -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.SealedClassesInheritorsCalculatorPreAnalysisHandler import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AnalysisApiFirTestServiceRegistrar import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtLibrarySourceModuleFactory import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtModuleFactory +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 import org.jetbrains.kotlin.analysis.test.framework.services.configuration.AnalysisApiJvmEnvironmentConfigurator @@ -53,7 +53,7 @@ object AnalysisApiFirLibrarySourceTestConfigurator : AnalysisApiTestConfigurator moduleStructure: TestModuleStructure, testServices: TestServices, project: Project - ): KtModuleProjectStructure { + ): KtTestModuleProjectStructure { return TestModuleStructureFactory.createProjectStructureByTestStructure(moduleStructure, testServices, project) } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirOutOfContentRootTestConfigurator.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirOutOfContentRootTestConfigurator.kt index 9578bf4c63b..69a1c93f1f5 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirOutOfContentRootTestConfigurator.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirOutOfContentRootTestConfigurator.kt @@ -9,12 +9,12 @@ import com.intellij.openapi.Disposable import com.intellij.openapi.project.Project import com.intellij.psi.PsiFile import com.intellij.psi.search.GlobalSearchScope -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.analysis.project.structure.KtNotUnderContentRootModule import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtModuleFactory +import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModuleProjectStructure +import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModule import org.jetbrains.kotlin.analysis.test.framework.project.structure.TestModuleStructureFactory import org.jetbrains.kotlin.analysis.test.framework.utils.SkipTestException import org.jetbrains.kotlin.platform.TargetPlatform @@ -45,7 +45,7 @@ object AnalysisApiFirOutOfContentRootTestConfigurator : AnalysisApiFirSourceLike moduleStructure: TestModuleStructure, testServices: TestServices, project: Project - ): KtModuleProjectStructure { + ): KtTestModuleProjectStructure { if (Directives.SKIP_WHEN_OUT_OF_CONTENT_ROOT in moduleStructure.allDirectives) { throw SkipWhenOutOfContentRootException() } @@ -66,15 +66,15 @@ private class SkipWhenOutOfContentRootException : SkipTestException() private object KtOutOfContentRootModuleFactory : KtModuleFactory { override fun createModule( testModule: TestModule, - contextModule: KtModuleWithFiles?, + contextModule: KtTestModule?, dependencyPaths: Collection, testServices: TestServices, project: Project, - ): KtModuleWithFiles { + ): KtTestModule { val psiFiles = TestModuleStructureFactory.createSourcePsiFiles(testModule, testServices, project) val platform = testModule.targetPlatform - val module = KtNotUnderContentRootModuleForTest(testModule.name, psiFiles.first(), platform) - return KtModuleWithFiles(module, psiFiles) + val ktModule = KtNotUnderContentRootModuleForTest(testModule.name, psiFiles.first(), platform) + return KtTestModule(testModule, ktModule, psiFiles) } } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirSourceLikeTestConfigurator.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirSourceLikeTestConfigurator.kt index 49c58419c22..cc37ba8eace 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirSourceLikeTestConfigurator.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirSourceLikeTestConfigurator.kt @@ -9,10 +9,10 @@ import com.intellij.openapi.Disposable import com.intellij.openapi.project.Project 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.api.standalone.base.project.structure.KtModuleProjectStructure import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.SealedClassesInheritorsCalculatorPreAnalysisHandler import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AnalysisApiFirTestServiceRegistrar import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.configureOptionalTestCompilerPlugin +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 import org.jetbrains.kotlin.analysis.test.framework.services.configuration.AnalysisApiJvmEnvironmentConfigurator @@ -57,7 +57,7 @@ abstract class AnalysisApiFirSourceLikeTestConfigurator(override val analyseInDe moduleStructure: TestModuleStructure, testServices: TestServices, project: Project - ): KtModuleProjectStructure { + ): KtTestModuleProjectStructure { return TestModuleStructureFactory.createProjectStructureByTestStructure(moduleStructure, testServices, project) } } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirStdlibSourceTestConfigurator.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirStdlibSourceTestConfigurator.kt index e1f0c523f38..e5e3effae71 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirStdlibSourceTestConfigurator.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/test/configurators/AnalysisApiFirStdlibSourceTestConfigurator.kt @@ -7,8 +7,8 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators import com.intellij.openapi.Disposable import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleWithFiles import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtModuleFactory +import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModule import org.jetbrains.kotlin.analysis.test.framework.project.structure.createKtLibrarySourceModule import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder @@ -28,11 +28,11 @@ object AnalysisApiFirStdlibSourceTestConfigurator : AnalysisApiFirSourceLikeTest private object KtStdlibSourceModuleFactory : KtModuleFactory { override fun createModule( testModule: TestModule, - contextModule: KtModuleWithFiles?, + contextModule: KtTestModule?, dependencyPaths: Collection, testServices: TestServices, project: Project, - ): KtModuleWithFiles { + ): KtTestModule { val libraryJar = ForTestCompileRuntime.runtimeJarForTests().toPath() val librarySourcesJar = ForTestCompileRuntime.runtimeSourcesJarForTests().toPath() return createKtLibrarySourceModule( diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/test/configurators/AnalysisApiSymbolLightClassesDecompiledTestConfigurator.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/test/configurators/AnalysisApiSymbolLightClassesDecompiledTestConfigurator.kt index a5d3eda1790..aa9e30db389 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/test/configurators/AnalysisApiSymbolLightClassesDecompiledTestConfigurator.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/decompiled/test/configurators/AnalysisApiSymbolLightClassesDecompiledTestConfigurator.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.light.classes.symbol.decompiled.test.configurators import com.intellij.openapi.Disposable import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirLibraryBinaryTestConfigurator -import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtModuleProjectStructure +import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtTestModuleProjectStructure import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestServiceRegistrar import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind @@ -32,7 +32,7 @@ object AnalysisApiSymbolLightClassesDecompiledTestConfigurator : AnalysisApiTest moduleStructure: TestModuleStructure, testServices: TestServices, project: Project - ): KtModuleProjectStructure { + ): KtTestModuleProjectStructure { return AnalysisApiFirLibraryBinaryTestConfigurator.createModules(moduleStructure, testServices, project) } } \ No newline at end of file