Fix script arguments order for imports with implicit receivers

#KT-33572 fixed
This commit is contained in:
Ilya Chernikov
2019-09-04 12:23:53 +02:00
parent 8989bfa235
commit 0fe137d75c
2 changed files with 22 additions and 4 deletions
@@ -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<SimpleScriptTemplate> {
makeSimpleConfigurationWithTestImport()
implicitReceivers(String::class)
}
val evaluationConfiguration = createJvmEvaluationConfigurationFromTemplate<SimpleScriptTemplate> {
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")
@@ -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())