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