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)
|
||||
}
|
||||
|
||||
@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")
|
||||
|
||||
+5
-4
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user