[Analysis API] Add test infrastructure for code fragments

Now, Analysis API tests can define modules with code fragments.
The preceding module will be used as a context module.
This commit is contained in:
Yan Zhulanow
2024-01-18 18:19:54 +09:00
committed by Space Team
parent 7298289e4e
commit 01ca31a061
17 changed files with 244 additions and 24 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.analysis.api.fir.test.configurators
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirCodeFragmentTestConfigurator
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirLibraryBinaryTestConfigurator
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirLibrarySourceTestConfigurator
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirScriptTestConfigurator
@@ -35,6 +36,11 @@ object AnalysisApiFirTestConfiguratorFactory : AnalysisApiTestConfiguratorFactor
require(data.analysisSessionMode == AnalysisSessionMode.Normal)
AnalysisApiFirLibrarySourceTestConfigurator
}
TestModuleKind.CodeFragment -> when (data.analysisSessionMode) {
AnalysisSessionMode.Normal -> AnalysisApiFirCodeFragmentTestConfigurator(analyseInDependentSession = false)
AnalysisSessionMode.Dependent -> AnalysisApiFirCodeFragmentTestConfigurator(analyseInDependentSession = true)
}
}
}
@@ -43,11 +49,16 @@ object AnalysisApiFirTestConfiguratorFactory : AnalysisApiTestConfiguratorFactor
data.frontend != FrontendKind.Fir -> false
data.analysisApiMode != AnalysisApiMode.Ide -> false
else -> when (data.moduleKind) {
TestModuleKind.Source, TestModuleKind.ScriptSource -> true
TestModuleKind.Source,
TestModuleKind.ScriptSource -> {
true
}
TestModuleKind.LibraryBinary,
TestModuleKind.LibrarySource
->
TestModuleKind.LibrarySource,
TestModuleKind.CodeFragment -> {
data.analysisSessionMode == AnalysisSessionMode.Normal
}
}
}
}