Refactor test utilties to reuse GenerationState construction

This commit is contained in:
Alexander Udalov
2020-10-22 16:46:44 +02:00
parent dd813777b9
commit bc76f1fec3
3 changed files with 27 additions and 51 deletions
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElementFinder
import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.search.ProjectScope
import org.jetbrains.kotlin.TestsCompiletimeError
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
@@ -169,6 +170,17 @@ object GenerationUtils {
)
analysisResult.throwIfError()
return generateFiles(project, files, configuration, classBuilderFactory, analysisResult)
}
fun generateFiles(
project: Project,
files: List<KtFile>,
configuration: CompilerConfiguration,
classBuilderFactory: ClassBuilderFactory,
analysisResult: AnalysisResult,
configureGenerationState: GenerationState.Builder.() -> Unit = {},
): GenerationState {
/* Currently Kapt3 only works with the old JVM backend, so disable IR for everything except actual bytecode generation. */
val isIrBackend =
classBuilderFactory.classBuilderMode == ClassBuilderMode.FULL && configuration.getBoolean(JVMConfigurationKeys.IR)
@@ -179,7 +191,7 @@ object GenerationUtils {
if (isIrBackend)
JvmIrCodegenFactory(configuration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases))
else DefaultCodegenFactory
).isIrBackend(isIrBackend).build()
).isIrBackend(isIrBackend).apply(configureGenerationState).build()
if (analysisResult.shouldGenerateCode) {
KotlinCodegenFacade.compileCorrectFiles(generationState)
}