Rename ScriptEvaluationEnvironment into ScriptEvaluationConfiguration
This commit is contained in:
@@ -129,5 +129,5 @@ interface CompiledScript<out ScriptBase : Any> {
|
||||
|
||||
val compilationConfiguration: ScriptCompilationConfiguration
|
||||
|
||||
suspend fun instantiate(scriptEvaluationEnvironment: ScriptEvaluationEnvironment?): ResultWithDiagnostics<ScriptBase>
|
||||
suspend fun instantiate(scriptEvaluationConfiguration: ScriptEvaluationConfiguration?): ResultWithDiagnostics<ScriptBase>
|
||||
}
|
||||
|
||||
@@ -9,30 +9,30 @@ package kotlin.script.experimental.api
|
||||
|
||||
import kotlin.script.experimental.util.PropertiesCollection
|
||||
|
||||
interface ScriptEvaluationEnvironmentKeys
|
||||
interface ScriptEvaluationConfigurationKeys
|
||||
|
||||
class ScriptEvaluationEnvironment(baseEvaluationEnvironments: Iterable<ScriptEvaluationEnvironment>, body: Builder.() -> Unit) :
|
||||
class ScriptEvaluationConfiguration(baseEvaluationEnvironments: Iterable<ScriptEvaluationConfiguration>, body: Builder.() -> Unit) :
|
||||
PropertiesCollection(Builder(baseEvaluationEnvironments).apply(body).data) {
|
||||
|
||||
constructor(body: Builder.() -> Unit = {}) : this(emptyList(), body)
|
||||
constructor(
|
||||
vararg baseEvaluationEnvironments: ScriptEvaluationEnvironment, body: Builder.() -> Unit = {}
|
||||
) : this(baseEvaluationEnvironments.asIterable(), body)
|
||||
vararg baseConfigurations: ScriptEvaluationConfiguration, body: Builder.() -> Unit = {}
|
||||
) : this(baseConfigurations.asIterable(), body)
|
||||
|
||||
class Builder internal constructor(baseEvaluationEnvironments: Iterable<ScriptEvaluationEnvironment>) :
|
||||
class Builder internal constructor(baseEvaluationEnvironments: Iterable<ScriptEvaluationConfiguration>) :
|
||||
ScriptCompilationConfigurationKeys,
|
||||
PropertiesCollection.Builder(baseEvaluationEnvironments)
|
||||
|
||||
companion object : ScriptEvaluationEnvironmentKeys
|
||||
companion object : ScriptEvaluationConfigurationKeys
|
||||
}
|
||||
|
||||
val ScriptEvaluationEnvironmentKeys.implicitReceivers by PropertiesCollection.key<List<Any>>()
|
||||
val ScriptEvaluationConfigurationKeys.implicitReceivers by PropertiesCollection.key<List<Any>>()
|
||||
|
||||
val ScriptEvaluationEnvironmentKeys.contextVariables by PropertiesCollection.key<Map<String, Any?>>() // external variables
|
||||
val ScriptEvaluationConfigurationKeys.contextVariables by PropertiesCollection.key<Map<String, Any?>>() // external variables
|
||||
|
||||
val ScriptEvaluationEnvironmentKeys.constructorArgs by PropertiesCollection.key<List<Any?>>()
|
||||
val ScriptEvaluationConfigurationKeys.constructorArgs by PropertiesCollection.key<List<Any?>>()
|
||||
|
||||
val ScriptEvaluationEnvironmentKeys.runArgs by PropertiesCollection.key<List<Any?>>()
|
||||
val ScriptEvaluationConfigurationKeys.runArgs by PropertiesCollection.key<List<Any?>>()
|
||||
|
||||
sealed class ResultValue {
|
||||
class Value(val name: String, val value: Any?, val type: String) : ResultValue() {
|
||||
@@ -42,12 +42,12 @@ sealed class ResultValue {
|
||||
object Unit : ResultValue()
|
||||
}
|
||||
|
||||
data class EvaluationResult(val returnValue: ResultValue, val environment: ScriptEvaluationEnvironment?)
|
||||
data class EvaluationResult(val returnValue: ResultValue, val configuration: ScriptEvaluationConfiguration?)
|
||||
|
||||
interface ScriptEvaluator {
|
||||
|
||||
suspend operator fun invoke(
|
||||
compiledScript: CompiledScript<*>,
|
||||
scriptEvaluationEnvironment: ScriptEvaluationEnvironment?
|
||||
scriptEvaluationConfiguration: ScriptEvaluationConfiguration?
|
||||
): ResultWithDiagnostics<EvaluationResult>
|
||||
}
|
||||
|
||||
+2
-2
@@ -31,11 +31,11 @@ abstract class BasicScriptingHost(
|
||||
open fun eval(
|
||||
script: ScriptSource,
|
||||
scriptCompilationConfiguration: ScriptCompilationConfiguration,
|
||||
environment: ScriptEvaluationEnvironment?
|
||||
configuration: ScriptEvaluationConfiguration?
|
||||
): ResultWithDiagnostics<EvaluationResult> =
|
||||
runInCoroutineContext {
|
||||
compiler(script, scriptCompilationConfiguration).onSuccess {
|
||||
evaluator(it, environment)
|
||||
evaluator(it, configuration)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -55,8 +55,8 @@ class KJvmCompiledScript<out ScriptBase : Any>(
|
||||
private val scriptClassFQName: String
|
||||
) : CompiledScript<ScriptBase> {
|
||||
|
||||
override suspend fun instantiate(scriptEvaluationEnvironment: ScriptEvaluationEnvironment?): ResultWithDiagnostics<ScriptBase> = try {
|
||||
val baseClassLoader = scriptEvaluationEnvironment?.get(JvmScriptEvaluationEnvironment.baseClassLoader)
|
||||
override suspend fun instantiate(scriptEvaluationConfiguration: ScriptEvaluationConfiguration?): ResultWithDiagnostics<ScriptBase> = try {
|
||||
val baseClassLoader = scriptEvaluationConfiguration?.get(JvmScriptEvaluationEnvironment.baseClassLoader)
|
||||
?: Thread.currentThread().contextClassLoader
|
||||
val dependencies = compilationConfiguration[ScriptCompilationConfiguration.dependencies]
|
||||
?.flatMap { (it as? JvmDependency)?.classpath?.map { it.toURI().toURL() } ?: emptyList() }
|
||||
|
||||
+5
-5
@@ -17,16 +17,16 @@ open class JvmScriptEvaluationEnvironment : PropertiesCollection.Builder() {
|
||||
|
||||
val JvmScriptEvaluationEnvironment.baseClassLoader by PropertiesCollection.key<ClassLoader?>(Thread.currentThread().contextClassLoader)
|
||||
|
||||
val ScriptEvaluationEnvironment.jvm get() = JvmScriptEvaluationEnvironment()
|
||||
val ScriptEvaluationConfiguration.jvm get() = JvmScriptEvaluationEnvironment()
|
||||
|
||||
open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
||||
|
||||
override suspend operator fun invoke(
|
||||
compiledScript: CompiledScript<*>,
|
||||
scriptEvaluationEnvironment: ScriptEvaluationEnvironment?
|
||||
scriptEvaluationConfiguration: ScriptEvaluationConfiguration?
|
||||
): ResultWithDiagnostics<EvaluationResult> =
|
||||
try {
|
||||
val obj = compiledScript.instantiate(scriptEvaluationEnvironment)
|
||||
val obj = compiledScript.instantiate(scriptEvaluationConfiguration)
|
||||
when (obj) {
|
||||
is ResultWithDiagnostics.Failure -> obj
|
||||
is ResultWithDiagnostics.Success -> {
|
||||
@@ -37,7 +37,7 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
||||
if (scriptObject !is Class<*>)
|
||||
ResultWithDiagnostics.Failure(ScriptDiagnostic("expecting class in this implementation, got ${scriptObject?.javaClass}"))
|
||||
else {
|
||||
val receivers = scriptEvaluationEnvironment?.get(ScriptEvaluationEnvironment.implicitReceivers)
|
||||
val receivers = scriptEvaluationConfiguration?.get(ScriptEvaluationConfiguration.implicitReceivers)
|
||||
val instance = if (receivers == null) {
|
||||
scriptObject.getConstructor().newInstance()
|
||||
} else {
|
||||
@@ -45,7 +45,7 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
||||
}
|
||||
|
||||
// TODO: fix result value
|
||||
ResultWithDiagnostics.Success(EvaluationResult(ResultValue.Value("", instance, ""), scriptEvaluationEnvironment))
|
||||
ResultWithDiagnostics.Success(EvaluationResult(ResultValue.Value("", instance, ""), scriptEvaluationConfiguration))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ class JvmGetScriptingClass : GetScriptingClass {
|
||||
if (dependencies == null) {
|
||||
dependencies = newDeps
|
||||
} else {
|
||||
if (newDeps != dependencies) throw IllegalArgumentException("scripting environment dependencies changed")
|
||||
if (newDeps != dependencies) throw IllegalArgumentException("scripting configuration dependencies changed")
|
||||
}
|
||||
|
||||
if (!baseClassLoaderIsInitialized) {
|
||||
|
||||
Reference in New Issue
Block a user