diff --git a/idea/idea-repl/src/org/jetbrains/kotlin/jsr223/KotlinJsr223StandardScriptEngineFactory4Idea.kt b/idea/idea-repl/src/org/jetbrains/kotlin/jsr223/KotlinJsr223StandardScriptEngineFactory4Idea.kt index 13739311789..331a46dbf63 100644 --- a/idea/idea-repl/src/org/jetbrains/kotlin/jsr223/KotlinJsr223StandardScriptEngineFactory4Idea.kt +++ b/idea/idea-repl/src/org/jetbrains/kotlin/jsr223/KotlinJsr223StandardScriptEngineFactory4Idea.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.jsr223 import org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineFactoryBase import org.jetbrains.kotlin.cli.common.repl.ScriptArgsWithTypes +import org.jetbrains.kotlin.script.util.KotlinJars import org.jetbrains.kotlin.script.util.scriptCompilationClasspathFromContextOrStlib import org.jetbrains.kotlin.utils.PathUtil import javax.script.ScriptContext @@ -29,7 +30,7 @@ class KotlinJsr223StandardScriptEngineFactory4Idea : KotlinJsr223JvmScriptEngine override fun getScriptEngine(): ScriptEngine = KotlinJsr223JvmScriptEngine4Idea( this, - scriptCompilationClasspathFromContextOrStlib(PathUtil.KOTLIN_JAVA_SCRIPT_RUNTIME_JAR, wholeClasspath = true), + scriptCompilationClasspathFromContextOrStlib(wholeClasspath = true) + KotlinJars.kotlinScriptStandardJars, "kotlin.script.templates.standard.ScriptTemplateWithBindings", { ctx, argTypes -> ScriptArgsWithTypes(arrayOf(ctx.getBindings(ScriptContext.ENGINE_SCOPE)), argTypes ?: emptyArray()) }, arrayOf(Map::class) diff --git a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/context.kt b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/context.kt index 129f6adbc96..1cac726e1cf 100644 --- a/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/context.kt +++ b/libraries/tools/kotlin-script-util/src/main/kotlin/org/jetbrains/kotlin/script/util/context.kt @@ -94,10 +94,14 @@ fun scriptCompilationClasspathFromContextOrNull( classLoader: ClassLoader = Thread.currentThread().contextClassLoader, wholeClasspath: Boolean = false ): List? { - fun List.takeAndFilter() = if (wholeClasspath) takeIfContainsAll(*keyNames) else filterIfContainsAll(*keyNames) + fun List.takeAndFilter() = when { + isEmpty() -> null + wholeClasspath -> takeIfContainsAll(*keyNames) + else -> filterIfContainsAll(*keyNames) + } return System.getProperty(KOTLIN_SCRIPT_CLASSPATH_PROPERTY)?.split(File.pathSeparator)?.map(::File) - ?: classpathFromClassloader(classLoader)?.takeAndFilter() - ?: classpathFromClasspathProperty()?.takeAndFilter() + ?: classpathFromClassloader(classLoader)?.takeAndFilter() + ?: classpathFromClasspathProperty()?.takeAndFilter() } fun scriptCompilationClasspathFromContextOrStlib(