From 44bf98e41d028babda04125aeb464b36d8dde427 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Thu, 13 Jan 2022 15:58:05 +0100 Subject: [PATCH] [kotlin] Fix scripts stdlib look up path #EA-430761 Fixed GitOrigin-RevId: e0c841291ae11c29d33c4279e518b6f94454a7a2 --- .../ScriptDefinitionForExtensionAndIdeConsoleRoots.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/kotlin/repl/src/org/jetbrains/kotlin/jsr223/ScriptDefinitionForExtensionAndIdeConsoleRoots.kt b/plugins/kotlin/repl/src/org/jetbrains/kotlin/jsr223/ScriptDefinitionForExtensionAndIdeConsoleRoots.kt index e9ab1ba49eb2..a183869417cd 100644 --- a/plugins/kotlin/repl/src/org/jetbrains/kotlin/jsr223/ScriptDefinitionForExtensionAndIdeConsoleRoots.kt +++ b/plugins/kotlin/repl/src/org/jetbrains/kotlin/jsr223/ScriptDefinitionForExtensionAndIdeConsoleRoots.kt @@ -6,9 +6,11 @@ import com.intellij.ide.extensionResources.ExtensionsRootType import com.intellij.ide.plugins.PluginManagerCore import com.intellij.ide.scratch.RootType import com.intellij.ide.script.IdeConsoleRootType +import com.intellij.openapi.application.PathManager import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionSourceAsContributor import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.resolve.VirtualFileScriptSource +import kotlin.io.path.nameWithoutExtension import kotlin.script.experimental.api.* import kotlin.script.experimental.jvm.defaultJvmScriptingHostConfiguration import kotlin.script.experimental.jvm.dependenciesFromClassContext @@ -46,12 +48,14 @@ private object ScriptCompilationConfigurationForExtensionAndIdeConsoleRoots : Sc baseClass(KotlinType(ScriptTemplateWithBindings::class)) displayName(SCRIPT_DEFINITION_NAME) jvm { + val kotlincLibraryName = + PathManager.getJarForClass(KotlinVersion::class.java)?.nameWithoutExtension ?: "kotlinc-lib" // This approach works, but could be quite expensive, since it forces indexing of the whole IDEA classpath // more economical approach would be to list names (without versions and .jar extension) of all jars // required for the scripts after the kotlin stdlib/script-runtime, and set wholeClasspath to false dependenciesFromClassContext( ScriptCompilationConfigurationForExtensionAndIdeConsoleRoots::class, - "kotlin-stdlib-jdk8", + kotlincLibraryName, wholeClasspath = true ) PluginManagerCore.getPlugins().forEach {