Implement JVM IR support for scripts

This commit is contained in:
Ilya Chernikov
2020-08-31 12:09:43 +02:00
parent 01d73ba0fc
commit d7112a4500
27 changed files with 924 additions and 65 deletions
@@ -37,7 +37,8 @@ import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
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.*
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.MessageCollector
import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil
import org.jetbrains.kotlin.cli.common.output.writeAll
@@ -616,17 +617,8 @@ object KotlinToJVMBytecodeCompiler {
sourceFiles: List<KtFile>,
module: Module?
): GenerationState {
// The IR backend does not handle .kts files yet.
var isIR = (configuration.getBoolean(JVMConfigurationKeys.IR) ||
val 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,