[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
+2
-2
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
-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)
|
||||
}
|
||||
}
|
||||
|
||||
+10
-11
@@ -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<PsiFile>
|
||||
|
||||
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<String, KtModuleWithFiles>
|
||||
private lateinit var modulesStructure: KtTestModuleProjectStructure
|
||||
private lateinit var modulesByName: Map<String, KtTestModule>
|
||||
|
||||
override fun getModule(moduleName: String): KtModule {
|
||||
return modulesByName.getValue(moduleName).ktModule
|
||||
@@ -39,7 +38,7 @@ class AnalysisApiKtModuleProviderImpl(
|
||||
override fun getModuleFiles(module: TestModule): List<PsiFile> =
|
||||
(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<KtFile> = getModuleFiles(module).filterIsInstance<KtFile>()
|
||||
@@ -56,9 +55,9 @@ fun TestServices.allKtFiles(): List<KtFile> = moduleStructure.modules.flatMap(kt
|
||||
|
||||
val TestServices.ktModuleProvider: AnalysisApiKtModuleProvider by TestServices.testServiceAccessor()
|
||||
|
||||
fun List<KtModuleWithFiles>.associateByName(): Map<String, KtModuleWithFiles> {
|
||||
return associateBy { (ktModule, _) ->
|
||||
when (ktModule) {
|
||||
fun List<KtTestModule>.associateByName(): Map<String, KtTestModule> {
|
||||
return associateBy { ktTestModule ->
|
||||
when (val ktModule = ktTestModule.ktModule) {
|
||||
is KtModuleByCompilerConfiguration -> ktModule.moduleName
|
||||
is KtSourceModule -> ktModule.moduleName
|
||||
is KtLibraryModule -> ktModule.libraryName
|
||||
|
||||
+3
-4
@@ -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<Path>,
|
||||
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? {
|
||||
|
||||
+4
-4
@@ -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<Path>,
|
||||
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,
|
||||
|
||||
+4
-5
@@ -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<Path>,
|
||||
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)
|
||||
}
|
||||
|
||||
+4
-5
@@ -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<Path>,
|
||||
testServices: TestServices,
|
||||
project: Project,
|
||||
): KtModuleWithFiles
|
||||
): KtTestModule
|
||||
}
|
||||
|
||||
private val TestServices.ktModuleFactory: KtModuleFactory by TestServices.testServiceAccessor()
|
||||
|
||||
+3
-4
@@ -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<Path>,
|
||||
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))
|
||||
}
|
||||
}
|
||||
|
||||
+3
-4
@@ -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<Path>,
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
+51
@@ -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<PsiFile>,
|
||||
)
|
||||
|
||||
/**
|
||||
* 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<KtTestModule>,
|
||||
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>()))
|
||||
}
|
||||
}
|
||||
+7
-9
@@ -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<Set<Path>, KtBinaryModule>
|
||||
|
||||
private typealias ModulesByName = Map<String, KtModuleWithFiles>
|
||||
private typealias ModulesByName = Map<String, KtTestModule>
|
||||
|
||||
/**
|
||||
* 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<KtModuleWithFiles> {
|
||||
): List<KtTestModule> {
|
||||
val moduleCount = moduleStructure.modules.size
|
||||
val result = ArrayList<KtModuleWithFiles>(moduleCount)
|
||||
val result = ArrayList<KtTestModule>(moduleCount)
|
||||
|
||||
val processedModules = HashMap<String, KtModuleWithFiles>(moduleCount)
|
||||
val processedModules = HashMap<String, KtTestModule>(moduleCount)
|
||||
val processedDependencies = mutableMapOf<String, Collection<Path>>()
|
||||
|
||||
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)
|
||||
|
||||
/**
|
||||
|
||||
+2
-2
@@ -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(),
|
||||
)
|
||||
|
||||
+2
-2
@@ -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")
|
||||
|
||||
+6
-2
@@ -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) }
|
||||
|
||||
+5
-5
@@ -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<KtBinaryModule>() }.asIterable(),
|
||||
)
|
||||
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+7
-7
@@ -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<Path>,
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -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<Path>,
|
||||
testServices: TestServices,
|
||||
project: Project,
|
||||
): KtModuleWithFiles {
|
||||
): KtTestModule {
|
||||
val libraryJar = ForTestCompileRuntime.runtimeJarForTests().toPath()
|
||||
val librarySourcesJar = ForTestCompileRuntime.runtimeSourcesJarForTests().toPath()
|
||||
return createKtLibrarySourceModule(
|
||||
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user