K2 Scripting: fix order of arguments processing
and base class handling: Since in K2 we do not distinguish between script arguments taken from the base class and provided properties, we need this extra functionality to preserve the argument order of K1 scripts. This is a temporary measure, since we're going to deprecate base class usage at some point (KT-60449), so the relevant constructor arguments should disappear too.
This commit is contained in:
committed by
Space Team
parent
96bde033e1
commit
020a590df7
+19
-2
@@ -8,6 +8,7 @@ package kotlin.script.experimental.jvm
|
||||
import java.lang.reflect.InvocationTargetException
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.impl._languageVersion
|
||||
|
||||
open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
||||
|
||||
@@ -71,6 +72,13 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
||||
refinedEvalConfiguration: ScriptEvaluationConfiguration,
|
||||
importedScriptsEvalResults: List<EvaluationResult>
|
||||
): Any {
|
||||
val isCompiledWithK2 =
|
||||
refinedEvalConfiguration[ScriptEvaluationConfiguration.compilationConfiguration]
|
||||
?.get(ScriptCompilationConfiguration._languageVersion)
|
||||
?.let {
|
||||
it.substringBefore('.').toIntOrNull()?.let { it >= 2 }
|
||||
} == true
|
||||
|
||||
val args = ArrayList<Any?>()
|
||||
|
||||
refinedEvalConfiguration[ScriptEvaluationConfiguration.previousSnippets]?.let {
|
||||
@@ -81,6 +89,12 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
||||
args.addAll(it)
|
||||
}
|
||||
|
||||
if (isCompiledWithK2) {
|
||||
refinedEvalConfiguration[ScriptEvaluationConfiguration.providedProperties]?.forEach {
|
||||
args.add(it.value)
|
||||
}
|
||||
}
|
||||
|
||||
importedScriptsEvalResults.forEach {
|
||||
args.add(it.returnValue.scriptInstance)
|
||||
}
|
||||
@@ -88,8 +102,11 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
||||
refinedEvalConfiguration[ScriptEvaluationConfiguration.implicitReceivers]?.let {
|
||||
args.addAll(it)
|
||||
}
|
||||
refinedEvalConfiguration[ScriptEvaluationConfiguration.providedProperties]?.forEach {
|
||||
args.add(it.value)
|
||||
|
||||
if (!isCompiledWithK2) {
|
||||
refinedEvalConfiguration[ScriptEvaluationConfiguration.providedProperties]?.forEach {
|
||||
args.add(it.value)
|
||||
}
|
||||
}
|
||||
|
||||
val ctor = java.constructors.single()
|
||||
|
||||
Reference in New Issue
Block a user