Remove evaluator from script definition, simplify interface

This commit is contained in:
Ilya Chernikov
2018-07-15 20:54:20 +02:00
parent e61ba1fd70
commit 91e6c0b77c
13 changed files with 31 additions and 62 deletions
@@ -18,8 +18,6 @@ interface ScriptDefinition {
// constructor(environment: ScriptingEnvironment) // the constructor is expected from implementations
val properties: ScriptDefinitionPropertiesBag
val evaluator: ScriptEvaluator<*>?
}
object ScriptDefinitionProperties {
@@ -24,13 +24,12 @@ typealias ScriptEvaluationEnvironment = ChainedPropertyBag
data class EvaluationResult(val returnValue: Any?, val environment: ScriptEvaluationEnvironment)
// NOTE: name inconsistency: run vs evaluate
interface ScriptEvaluator<in ScriptBase : Any> {
interface ScriptEvaluator {
// constructor(properties: ScriptDefinitionPropertiesBag) // the constructor is expected from implementations
suspend fun eval(
compiledScript: CompiledScript<ScriptBase>,
compiledScript: CompiledScript<*>,
scriptEvaluationEnvironment: ScriptEvaluationEnvironment
): ResultWithDiagnostics<EvaluationResult>
}