From 186e0b0cba446dbffc7b418c44a490276d04e10c Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Wed, 29 Jan 2020 20:20:00 +0300 Subject: [PATCH] Do not call IR backend when there's a script involved --- .../jvm/compiler/KotlinToJVMBytecodeCompiler.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt index 0052fa8a2cd..eb1ea6cab55 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt @@ -39,8 +39,7 @@ import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.checkKotlinPackageUsage import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport -import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.OUTPUT -import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.WARNING +import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.* import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil import org.jetbrains.kotlin.cli.common.output.writeAll @@ -612,8 +611,17 @@ object KotlinToJVMBytecodeCompiler { sourceFiles: List, module: Module? ): GenerationState { - val isIR = configuration.getBoolean(JVMConfigurationKeys.IR) || - configuration.getBoolean(CommonConfigurationKeys.USE_FIR) + // The IR backend does not handle .kts files yet. + var isIR = (configuration.getBoolean(JVMConfigurationKeys.IR) || + configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) + val anyKts = sourceFiles.any { it.isScript() } + if (isIR && anyKts) { + environment.messageCollector.report( + STRONG_WARNING, + "IR backend does not support .kts scripts, switching to old JVM backend" + ) + isIR = false + } val generationState = GenerationState.Builder( environment.project, ClassBuilderFactories.BINARIES,