From fc5f56adc568bd799a2c55a644cfb4571e3731e2 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Mon, 27 Jun 2022 14:51:42 +0200 Subject: [PATCH] Scripting: restore REPL script definition incorrectly set to default definition on switching REPL to the new infra --- .../compiler/plugin/repl/ReplInterpreter.kt | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/ReplInterpreter.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/ReplInterpreter.kt index eabe5a8e770..8018add7e08 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/ReplInterpreter.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/repl/ReplInterpreter.kt @@ -21,15 +21,13 @@ import org.jetbrains.kotlin.scripting.compiler.plugin.impl.ReplCompilationState import org.jetbrains.kotlin.scripting.compiler.plugin.impl.ScriptDiagnosticsMessageCollector import org.jetbrains.kotlin.scripting.compiler.plugin.impl.createCompilationContextFromEnvironment import org.jetbrains.kotlin.scripting.compiler.plugin.repl.configuration.ReplConfiguration -import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition -import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider +import org.jetbrains.kotlin.scripting.definitions.* import java.io.PrintWriter import java.net.URLClassLoader import java.util.concurrent.atomic.AtomicInteger import kotlin.script.experimental.api.* import kotlin.script.experimental.host.ScriptingHostConfiguration import kotlin.script.experimental.host.toScriptSource -import kotlin.script.experimental.host.withDefaultsFrom import kotlin.script.experimental.impl.internalScriptingRunSuspend import kotlin.script.experimental.jvm.BasicJvmReplEvaluator import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration @@ -46,10 +44,15 @@ class ReplInterpreter( private val replState: JvmReplCompilerState<*> + companion object { + private val REPL_LINE_AS_SCRIPT_DEFINITION = object : KotlinScriptDefinition(Any::class) { + override val name = "Kotlin REPL" + } + + } + init { - val scriptDefinition: ScriptDefinition? = - ScriptDefinitionProvider.getInstance(projectEnvironment.project)?.getDefaultDefinition() - hostConfiguration = scriptDefinition?.hostConfiguration.withDefaultsFrom(defaultJvmScriptingHostConfiguration) + hostConfiguration = defaultJvmScriptingHostConfiguration val environment = (projectEnvironment as? KotlinCoreEnvironment.ProjectEnvironment)?.let { KotlinCoreEnvironment.createForProduction(it, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) @@ -60,18 +63,14 @@ class ReplInterpreter( val context = createCompilationContextFromEnvironment( - scriptDefinition?.compilationConfiguration.with { - hostConfiguration(this@ReplInterpreter.hostConfiguration) - }, + ScriptCompilationConfigurationFromDefinition(hostConfiguration, REPL_LINE_AS_SCRIPT_DEFINITION), environment, ScriptDiagnosticsMessageCollector(environment.messageCollector) ) compilationConfiguration = context.baseScriptCompilationConfiguration - evaluationConfiguration = scriptDefinition?.evaluationConfiguration.with { - hostConfiguration(this@ReplInterpreter.hostConfiguration) + evaluationConfiguration = ScriptEvaluationConfigurationFromDefinition(hostConfiguration, REPL_LINE_AS_SCRIPT_DEFINITION).with { scriptExecutionWrapper { replConfiguration.executionInterceptor.execute(it) } - constructorArgs(emptyArray()) } replState = JvmReplCompilerState(