diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt index 750e40e8232..f10d1b44ee4 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt @@ -20,7 +20,6 @@ import com.intellij.openapi.Disposable import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.common.repl.* import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots -import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots import org.jetbrains.kotlin.cli.jvm.repl.GenericReplCompiler import org.jetbrains.kotlin.cli.jvm.repl.GenericReplCompilerState import org.jetbrains.kotlin.config.CommonConfigurationKeys @@ -54,6 +53,7 @@ open class KotlinJvmReplService( addJvmClasspathRoots(PathUtil.getKotlinPathsForCompiler().let { listOf(it.runtimePath, it.reflectPath, it.scriptRuntimePath) }) addJvmClasspathRoots(templateClasspath) put(CommonConfigurationKeys.MODULE_NAME, "kotlin-script") + put(CommonConfigurationKeys.SKIP_METADATA_VERSION_CHECK, true) } protected fun makeScriptDefinition(templateClasspath: List, templateClassName: String): KotlinScriptDefinition? { diff --git a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223JvmLocalScriptEngine.kt b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223JvmLocalScriptEngine.kt index 77a40ba0350..07f12103ecb 100644 --- a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223JvmLocalScriptEngine.kt +++ b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223JvmLocalScriptEngine.kt @@ -24,6 +24,8 @@ import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots import org.jetbrains.kotlin.cli.jvm.repl.GenericReplCompiler import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.config.JVMConfigurationKeys +import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion import org.jetbrains.kotlin.script.KotlinScriptDefinition import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.utils.PathUtil @@ -71,5 +73,6 @@ class KotlinJsr223JvmLocalScriptEngine( addJvmClasspathRoots(PathUtil.getJdkClassesRoots()) addJvmClasspathRoots(templateClasspath) put(CommonConfigurationKeys.MODULE_NAME, "kotlin-script") + put(CommonConfigurationKeys.SKIP_METADATA_VERSION_CHECK, true) } } diff --git a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineFactoryExamples.kt b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineFactoryExamples.kt index 1430884e568..115c9555465 100644 --- a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineFactoryExamples.kt +++ b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinJsr223ScriptEngineFactoryExamples.kt @@ -77,6 +77,7 @@ private fun contextClasspath(keyName: String, classLoader: ClassLoader): List = (System.getProperty("kotlin.script.classpath")?.split(File.pathSeparator)?.map(::File) @@ -84,9 +85,9 @@ private fun scriptCompilationClasspathFromContext(keyName: String, classLoader: ).let { it?.plus(kotlinScriptStandardJars) ?: kotlinScriptStandardJars } - .map { it?.canonicalFile } + .mapNotNull { it?.canonicalFile } .distinct() - .mapNotNull { it?.existsOrNull() } + .filter { (it.isDirectory || (it.isFile && it.extension.toLowerCase() in validJarExtensions)) && it.exists() } private val kotlinCompilerJar: File by lazy { // highest prio - explicit property diff --git a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinStandardJsr223ScriptTemplate.kt b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinStandardJsr223ScriptTemplate.kt index 1df06cc5428..702b956846c 100644 --- a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinStandardJsr223ScriptTemplate.kt +++ b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/jsr223/KotlinStandardJsr223ScriptTemplate.kt @@ -5,10 +5,11 @@ import org.jetbrains.kotlin.cli.common.repl.KOTLIN_SCRIPT_STATE_BINDINGS_KEY import org.jetbrains.kotlin.script.ScriptTemplateDefinition import javax.script.Bindings import javax.script.ScriptEngine +import kotlin.script.templates.standard.ScriptTemplateWithBindings @Suppress("unused") @ScriptTemplateDefinition -abstract class KotlinStandardJsr223ScriptTemplate(val bindings: Bindings) { +abstract class KotlinStandardJsr223ScriptTemplate(val jsr223Bindings: Bindings) : ScriptTemplateWithBindings(jsr223Bindings) { private val myEngine: ScriptEngine? get() = bindings[KOTLIN_SCRIPT_ENGINE_BINDINGS_KEY]?.let { it as? ScriptEngine } @@ -17,7 +18,7 @@ abstract class KotlinStandardJsr223ScriptTemplate(val bindings: Bindings) { fun eval(script: String, newBindings: Bindings): Any? = withMyEngine { - val savedState = newBindings[KOTLIN_SCRIPT_STATE_BINDINGS_KEY]?.takeIf { it === this.bindings[KOTLIN_SCRIPT_STATE_BINDINGS_KEY] }?.apply { + val savedState = newBindings[KOTLIN_SCRIPT_STATE_BINDINGS_KEY]?.takeIf { it === this.jsr223Bindings[KOTLIN_SCRIPT_STATE_BINDINGS_KEY] }?.apply { newBindings[KOTLIN_SCRIPT_STATE_BINDINGS_KEY] = null } val res = it.eval(script, newBindings) @@ -29,10 +30,10 @@ abstract class KotlinStandardJsr223ScriptTemplate(val bindings: Bindings) { fun eval(script: String): Any? = withMyEngine { - val savedState = bindings.remove(KOTLIN_SCRIPT_STATE_BINDINGS_KEY) - val res = it.eval(script, bindings) + val savedState = jsr223Bindings.remove(KOTLIN_SCRIPT_STATE_BINDINGS_KEY) + val res = it.eval(script, jsr223Bindings) savedState?.apply { - bindings[KOTLIN_SCRIPT_STATE_BINDINGS_KEY] = savedState + jsr223Bindings[KOTLIN_SCRIPT_STATE_BINDINGS_KEY] = savedState } res }