Lorin
04/01/2020, 1:43 AM@KotlinScript(fileExtension = "simplescript.kts")
abstract class SimpleScript
fun main() {
val config = createJvmCompilationConfigurationFromTemplate<SimpleScript> {
jvm {
dependenciesFromCurrentContext(wholeClasspath = true)
}
}
val s = """
println("This is a test!")
""".trimIndent()
val res = BasicJvmScriptingHost().eval(s.toScriptSource(), config, null)
println(res)
}
Running this program, the output is as follows:
This is a test!
Success(value=EvaluationResult(returnValue=Unit, configuration=kotlin.script.experimental.api.ScriptEvaluationConfiguration@a9a8cb94), reports=[])
Though the evalution of this script is successful, EvaluationResult.returnValue
is Unit
, which is not expected.
I try to run this program with kotlin-scripting (v1.3.31), the output is:
This is a test!
Success(value=EvaluationResult(returnValue=: = Script_simplescript@3ddf2a72, configuration=kotlin.script.experimental.api.ScriptEvaluationConfiguration@a4b45b1a), reports=[])
It is clear that the script object (Script_simplescript@3ddf2a72) is stored in EvaluationResult.returnValue
, which is the desirable behavior for me.
Could anyone from JB confirm it? Thanks!Lorin
04/01/2020, 8:57 AMilya.chernikov
04/01/2020, 10:00 AMUnit
type, this is the ResultValue.Unit
, that contains the instance you're looking for. A bit more info is in the issue.Lorin
04/01/2020, 10:07 AMval s = """
println("This is a test!")
this
""".trimIndent()
ilya.chernikov
04/01/2020, 10:13 AMEvaluationResult.returnValue.scriptInstance
, regardles of the return value type you're getting.Lorin
04/01/2020, 10:22 AMNikky
04/01/2020, 1:35 PM