diff --git a/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ScriptingHostTest.kt b/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ScriptingHostTest.kt index 415c149f876..b230a9324d7 100644 --- a/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ScriptingHostTest.kt +++ b/libraries/scripting/jvm-host-test/test/kotlin/script/experimental/jvmhost/test/ScriptingHostTest.kt @@ -191,6 +191,23 @@ class ScriptingHostTest : TestCase() { Assert.assertEquals(greeting, output) } + @Test + fun testSimpleImportWithImplicitReceiver() { + val greeting = listOf("Hello from helloWithVal script!", "Hello from imported helloWithVal script!") + val script = "println(\"Hello from imported \$helloScriptName script!\")" + val compilationConfiguration = createJvmCompilationConfigurationFromTemplate { + makeSimpleConfigurationWithTestImport() + implicitReceivers(String::class) + } + val evaluationConfiguration = createJvmEvaluationConfigurationFromTemplate { + implicitReceivers("abc") + } + val output = captureOut { + BasicJvmScriptingHost().eval(script.toScriptSource(), compilationConfiguration, evaluationConfiguration).throwOnFailure() + }.lines() + Assert.assertEquals(greeting, output) + } + @Test fun testDiamondImportWithoutSharing() { val greeting = listOf("Hi from common", "Hi from middle", "Hi from common", "sharedVar == 3") diff --git a/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/BasicJvmScriptEvaluator.kt b/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/BasicJvmScriptEvaluator.kt index 49035923b1b..8c8e20d82d4 100644 --- a/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/BasicJvmScriptEvaluator.kt +++ b/libraries/scripting/jvm/src/kotlin/script/experimental/jvm/BasicJvmScriptEvaluator.kt @@ -75,6 +75,11 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator { refinedEvalConfiguration[ScriptEvaluationConfiguration.constructorArgs]?.let { args.addAll(it) } + + importedScriptsEvalResults.forEach { + args.add(it.returnValue.scriptInstance) + } + refinedEvalConfiguration[ScriptEvaluationConfiguration.implicitReceivers]?.let { args.addAll(it) } @@ -82,10 +87,6 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator { args.add(it.value) } - importedScriptsEvalResults.forEach { - args.add(it.returnValue.scriptInstance) - } - val ctor = java.constructors.single() return ctor.newInstance(*args.toArray())