2929 */
3030package org.scijava.plugins.scripting.kotlin
3131
32- import org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineFactoryBase
32+ import org.jetbrains.kotlin.cli.common.repl.*
33+ import org.jetbrains.kotlin.com.intellij.openapi.util.Disposer
34+ import org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmDaemonCompileScriptEngine
35+ import org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngine
36+ import org.jetbrains.kotlin.script.jsr223.KotlinStandardJsr223ScriptTemplate
3337import org.scijava.plugin.Plugin
3438import org.scijava.script.AdaptedScriptLanguage
3539import org.scijava.script.ScriptLanguage
3640import java.io.Reader
41+ import java.lang.Exception
42+ import java.util.concurrent.atomic.AtomicInteger
43+ import java.util.concurrent.locks.ReentrantReadWriteLock
3744import javax.script.*
45+ import kotlin.script.experimental.jvm.util.KotlinJars
46+ import kotlin.script.experimental.jvm.util.scriptCompilationClasspathFromContext
47+ import kotlin.system.exitProcess
3848
3949/* *
4050 * A SciJava [ScriptLanguage] for Kotlin.
@@ -53,7 +63,22 @@ class KotlinScriptLanguage : AdaptedScriptLanguage(Factory()) {
5363
5464 class Factory : KotlinJsr223JvmScriptEngineFactoryBase () {
5565 override fun getScriptEngine (): ScriptEngine {
56- return SynchronizedScriptEngine (ScriptEngineManager ().getEngineByExtension(" kts" ))
66+ return SynchronizedScriptEngine (
67+ // KotlinJsr223JvmDaemonCompileScriptEngine(
68+ // this,
69+ // KotlinJars.compilerWithScriptingClasspath,
70+ // scriptCompilationClasspathFromContext("kotlin-script-util.jar", wholeClasspath = true),
71+ // KotlinStandardJsr223ScriptTemplate::class.qualifiedName!!,
72+ // { ctx, types -> ScriptArgsWithTypes(arrayOf(ctx.getBindings(ScriptContext.ENGINE_SCOPE)), types ?: emptyArray()) },
73+ // arrayOf(Bindings::class)
74+ // )
75+ KotlinJsr223JvmLocalScriptEngine (
76+ this ,
77+ scriptCompilationClasspathFromContext(" kotlin-script-util.jar" , wholeClasspath = true ),
78+ KotlinStandardJsr223ScriptTemplate ::class .qualifiedName!! ,
79+ { ctx, types -> ScriptArgsWithTypes (arrayOf(ctx.getBindings(ScriptContext .ENGINE_SCOPE )), types ? : emptyArray()) },
80+ arrayOf(Bindings ::class ))
81+ )
5782 }
5883 }
5984
0 commit comments