invesdwin / invesdwin-context

Module system for software product lines
GNU Lesser General Public License v3.0
6 stars 0 forks source link

implement scripting for kotlin #19

Closed subes closed 2 years ago

subes commented 2 years ago

Here an example that uses an older JSR223 provider (DynKT): https://github.com/scijava/scripting-kotlin/blob/master/src/main/kotlin/org/scijava/plugins/scripting/kotlin/KotlinScriptLanguage.kt https://github.com/xafero/dynkt

Though kotlin now has built in support for JSR223: https://kotlinlang.org/docs/whatsnew11.html#javax-script-support https://github.com/energister/kotlin-jsr223-example

subes commented 2 years ago

done, though can not use a scriptcache due to some obscure errors:

//we can not use a script cache here since kotlin gets confused with type declarations (nullable/not nullable)
//        Caused by: javax.script.ScriptException: ERROR Front-end Internal error: Failed to analyze declaration ScriptingHost5cdcdeb8_Line_0
//        File being compiled: (1,1) in ScriptingHost5cdcdeb8_Line_0.kts
//        The root cause org.jetbrains.kotlin.resolve.lazy.NoDescriptorForDeclarationException was thrown at: org.jetbrains.kotlin.resolve.lazy.BasicAbsentDescriptorHandler.diagnoseDescriptorNotFound(AbsentDescriptorHandler.kt:18): org.jetbrains.kotlin.util.KotlinFrontEndException: Front-end Internal error: Failed to analyze declaration ScriptingHost5cdcdeb8_Line_0
//        File being compiled: (1,1) in ScriptingHost5cdcdeb8_Line_0.kts
//        The root cause org.jetbrains.kotlin.resolve.lazy.NoDescriptorForDeclarationException was thrown at: org.jetbrains.kotlin.resolve.lazy.BasicAbsentDescriptorHandler.diagnoseDescriptorNotFound(AbsentDescriptorHandler.kt:18)
//            at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.asJsr223EvalResult(KotlinJsr223JvmScriptEngineBase.kt:104)
//            at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.compileAndEval(KotlinJsr223JvmScriptEngineBase.kt:63)
//            at kotlin.script.experimental.jvmhost.jsr223.KotlinJsr223ScriptEngineImpl.compileAndEval(KotlinJsr223ScriptEngineImpl.kt:95)
//            at org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.eval(KotlinJsr223JvmScriptEngineBase.kt:31)
//            at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
//            at de.invesdwin.context.kotlin.pool.WrappedKotlinScriptEngine.evalParsing(WrappedKotlinScriptEngine.java:87)
//            ... 77 more