Fix script arguments order for imports with implicit receivers
#KT-33572 fixed
This commit is contained in:
+17
@@ -191,6 +191,23 @@ class ScriptingHostTest : TestCase() {
|
|||||||
Assert.assertEquals(greeting, output)
|
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
|
@Test
|
||||||
fun testDiamondImportWithoutSharing() {
|
fun testDiamondImportWithoutSharing() {
|
||||||
val greeting = listOf("Hi from common", "Hi from middle", "Hi from common", "sharedVar == 3")
|
val greeting = listOf("Hi from common", "Hi from middle", "Hi from common", "sharedVar == 3")
|
||||||
|
|||||||
+5
-4
@@ -75,6 +75,11 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
|||||||
refinedEvalConfiguration[ScriptEvaluationConfiguration.constructorArgs]?.let {
|
refinedEvalConfiguration[ScriptEvaluationConfiguration.constructorArgs]?.let {
|
||||||
args.addAll(it)
|
args.addAll(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
importedScriptsEvalResults.forEach {
|
||||||
|
args.add(it.returnValue.scriptInstance)
|
||||||
|
}
|
||||||
|
|
||||||
refinedEvalConfiguration[ScriptEvaluationConfiguration.implicitReceivers]?.let {
|
refinedEvalConfiguration[ScriptEvaluationConfiguration.implicitReceivers]?.let {
|
||||||
args.addAll(it)
|
args.addAll(it)
|
||||||
}
|
}
|
||||||
@@ -82,10 +87,6 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
|||||||
args.add(it.value)
|
args.add(it.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
importedScriptsEvalResults.forEach {
|
|
||||||
args.add(it.returnValue.scriptInstance)
|
|
||||||
}
|
|
||||||
|
|
||||||
val ctor = java.constructors.single()
|
val ctor = java.constructors.single()
|
||||||
|
|
||||||
return ctor.newInstance(*args.toArray())
|
return ctor.newInstance(*args.toArray())
|
||||||
|
|||||||
Reference in New Issue
Block a user