[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
This commit is contained in:
committed by
Space Team
parent
878eba7d52
commit
2060709c03
-34
@@ -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<KtModuleWithFiles>,
|
||||
val binaryModules: Iterable<KtBinaryModule>,
|
||||
) {
|
||||
fun allKtModules(): List<KtModule> = buildList {
|
||||
mainModules.mapTo(this) { it.ktModule }
|
||||
addAll(binaryModules)
|
||||
}
|
||||
|
||||
fun allSourceFiles(): List<PsiFileSystemItem> = buildList {
|
||||
val files = mainModules.flatMap { it.files }
|
||||
addAll(files)
|
||||
addAll(findJvmRootsForJavaFiles(files.filterIsInstance<PsiJavaFile>()))
|
||||
}
|
||||
}
|
||||
|
||||
data class KtModuleWithFiles(
|
||||
val ktModule: KtModule,
|
||||
val files: List<PsiFile>
|
||||
)
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user