[LL FIR] support script tests
This commit is contained in:
committed by
Space Team
parent
cba9f1c559
commit
8e623ee73a
+1
@@ -53,6 +53,7 @@ val TestServices.ktModuleProvider: AnalysisApiKtModuleProvider by TestServices.t
|
||||
fun List<KtModuleWithFiles>.associateByName(): Map<String, KtModuleWithFiles> {
|
||||
return associateBy { (ktModule, _) ->
|
||||
when (ktModule) {
|
||||
is KtModuleByCompilerConfiguration -> ktModule.moduleName
|
||||
is KtSourceModule -> ktModule.moduleName
|
||||
is KtLibraryModule -> ktModule.libraryName
|
||||
is KtLibrarySourceModule -> ktModule.libraryName
|
||||
|
||||
+10
@@ -110,6 +110,16 @@ class KtSourceModuleByCompilerConfiguration(
|
||||
TopDownAnalyzerFacadeForJVM.newModuleSearchScope(project, psiFiles.filterIsInstance<KtFile>())
|
||||
}
|
||||
|
||||
class KtScriptModuleByCompilerConfiguration(
|
||||
project: Project,
|
||||
testModule: TestModule,
|
||||
override val file: KtFile,
|
||||
testServices: TestServices,
|
||||
) : KtModuleByCompilerConfiguration(project, testModule, listOf(file), testServices), KtScriptModule {
|
||||
override val ktModule: KtModule get() = this
|
||||
override val contentScope: GlobalSearchScope get() = GlobalSearchScope.fileScope(file)
|
||||
}
|
||||
|
||||
class KtLibraryModuleByCompilerConfiguration(
|
||||
project: Project,
|
||||
testModule: TestModule,
|
||||
|
||||
+9
-9
@@ -11,9 +11,10 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilt
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based.facades.LLFirAnalyzerFacadeFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.FirLowLevelCompilerBasedTestConfigurator
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.analysis.test.framework.AbstractCompilerBasedTest
|
||||
import org.jetbrains.kotlin.analysis.test.framework.base.registerAnalysisApiBaseTestServices
|
||||
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtSourceModuleByCompilerConfiguration
|
||||
import org.jetbrains.kotlin.analysis.test.framework.project.structure.KtModuleByCompilerConfiguration
|
||||
import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModuleProvider
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
@@ -84,17 +85,16 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
|
||||
|
||||
private fun analyzeDependsOnModule(module: TestModule): FirOutputPartForDependsOnModule {
|
||||
val moduleInfoProvider = testServices.ktModuleProvider
|
||||
val ktModule = moduleInfoProvider.getModule(module.name) as KtSourceModuleByCompilerConfiguration
|
||||
val ktModule = moduleInfoProvider.getModule(module.name) as KtModuleByCompilerConfiguration
|
||||
|
||||
val project = ktModule.project
|
||||
val firResolveSession = LLFirResolveSessionService.getInstance(project).getFirResolveSessionNoCaching(ktModule)
|
||||
val firResolveSession = LLFirResolveSessionService.getInstance(project).getFirResolveSessionNoCaching(ktModule as KtModule)
|
||||
|
||||
val allFirFiles =
|
||||
module.files.filter { it.isKtFile }.zip(
|
||||
ktModule.psiFiles
|
||||
.filterIsInstance<KtFile>()
|
||||
.map { psiFile -> psiFile.getOrBuildFirFile(firResolveSession) }
|
||||
)
|
||||
val allFirFiles = module.files.filter { it.isKtFile }.zip(
|
||||
ktModule.psiFiles
|
||||
.filterIsInstance<KtFile>()
|
||||
.map { psiFile -> psiFile.getOrBuildFirFile(firResolveSession) }
|
||||
)
|
||||
|
||||
val diagnosticCheckerFilter = if (FirDiagnosticsDirectives.WITH_EXTENDED_CHECKERS in module.directives) {
|
||||
DiagnosticCheckerFilter.EXTENDED_AND_COMMON_CHECKERS
|
||||
|
||||
+18
-9
@@ -7,20 +7,23 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.test.base
|
||||
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestServiceRegistrar
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
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.TestModuleStructureFactory
|
||||
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
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
|
||||
object FirLowLevelCompilerBasedTestConfigurator : AnalysisApiTestConfigurator() {
|
||||
override val analyseInDependentSession: Boolean get() = false
|
||||
@@ -35,6 +38,7 @@ object FirLowLevelCompilerBasedTestConfigurator : AnalysisApiTestConfigurator()
|
||||
AnalysisApiBaseTestServiceRegistrar,
|
||||
AnalysisApiDecompiledCodeTestServiceRegistrar,
|
||||
AnalysisApiFirTestServiceRegistrar,
|
||||
AnalysisApiScriptTestServiceRegistrar,
|
||||
)
|
||||
|
||||
override fun createModules(
|
||||
@@ -44,11 +48,16 @@ object FirLowLevelCompilerBasedTestConfigurator : AnalysisApiTestConfigurator()
|
||||
): KtModuleProjectStructure {
|
||||
val mainModules = moduleStructure.modules.map { testModule ->
|
||||
val files = TestModuleStructureFactory.createSourcePsiFiles(testModule, testServices, project)
|
||||
KtModuleWithFiles(
|
||||
KtSourceModuleByCompilerConfiguration(project, testModule, files, testServices),
|
||||
files
|
||||
)
|
||||
val scriptFile = files.singleOrNull() as? KtFile
|
||||
val ktModule = if (scriptFile?.isScript() == true) {
|
||||
KtScriptModuleByCompilerConfiguration(project, testModule, scriptFile, testServices)
|
||||
} else {
|
||||
KtSourceModuleByCompilerConfiguration(project, testModule, files, testServices)
|
||||
}
|
||||
|
||||
KtModuleWithFiles(ktModule, files)
|
||||
}
|
||||
|
||||
return KtModuleProjectStructure(
|
||||
mainModules = mainModules,
|
||||
binaryModules = mainModules.asSequence().flatMap { it.ktModule.allDirectDependenciesOfType<KtBinaryModule>() }.asIterable(),
|
||||
|
||||
Reference in New Issue
Block a user