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
@@ -14,19 +14,21 @@ import kotlin.script.experimental.jvm.DummyCompiledJvmScriptCache
import kotlin.script.experimental.jvm.JvmBasicScriptingHost
import kotlin.script.experimental.jvm.JvmGetScriptingClass
import kotlin.script.experimental.jvm.JvmScriptCompiler
import kotlin.script.experimental.jvm.runners.BasicJvmScriptEvaluator
import kotlin.script.experimental.jvmhost.impl.KJVMCompilerImpl
import kotlin.script.experimental.misc.invoke
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
val scriptCompiler = JvmScriptCompiler(KJVMCompilerImpl(), DummyCompiledJvmScriptCache())
val environment = ScriptingEnvironment(
ScriptingEnvironmentProperties.getScriptingClass(JvmGetScriptingClass())
)
val scriptDefinition = ScriptDefinitionFromAnnotatedBaseClass(
KotlinType(MyScriptWithMavenDeps::class),
ScriptingEnvironment(
ScriptingEnvironmentProperties.getScriptingClass(JvmGetScriptingClass())
)
environment
)
val host = JvmBasicScriptingHost(scriptCompiler, scriptDefinition.evaluator)
val host = JvmBasicScriptingHost(scriptCompiler, BasicJvmScriptEvaluator())
return host.eval(
scriptFile.toScriptSource(), scriptDefinition, ScriptCompileConfiguration(), ScriptEvaluationEnvironment()
@@ -14,18 +14,18 @@ import kotlin.script.dependencies.ScriptContents
import kotlin.script.dependencies.ScriptDependenciesResolver
import kotlin.script.experimental.annotations.KotlinScript
import kotlin.script.experimental.annotations.KotlinScriptDefaultCompilationConfiguration
import kotlin.script.experimental.annotations.KotlinScriptEvaluator
import kotlin.script.experimental.annotations.KotlinScriptFileExtension
import kotlin.script.experimental.api.*
import kotlin.script.experimental.jvm.*
import kotlin.script.experimental.jvm.runners.BasicJvmScriptEvaluator
import kotlin.script.experimental.misc.*
import kotlin.script.experimental.jvm.JvmDependency
import kotlin.script.experimental.jvm.jvmJavaHomeParams
import kotlin.script.experimental.jvm.mapLegacyDiagnosticSeverity
import kotlin.script.experimental.jvm.mapLegacyScriptPosition
import kotlin.script.experimental.misc.invoke
import kotlin.script.experimental.util.TypedKey
@KotlinScript
@KotlinScriptFileExtension("scriptwithdeps.kts")
@KotlinScriptDefaultCompilationConfiguration(MyConfiguration::class)
@KotlinScriptEvaluator(BasicJvmScriptEvaluator::class)
abstract class MyScriptWithMavenDeps {
// abstract fun body(vararg args: String): Int
}
@@ -12,6 +12,7 @@ import kotlin.script.experimental.api.*
import kotlin.script.experimental.definitions.ScriptDefinitionFromAnnotatedBaseClass
import kotlin.script.experimental.host.toScriptSource
import kotlin.script.experimental.jvm.*
import kotlin.script.experimental.jvm.runners.BasicJvmScriptEvaluator
import kotlin.script.experimental.jvmhost.impl.KJVMCompilerImpl
import kotlin.script.experimental.misc.*
@@ -24,14 +25,15 @@ val myJvmConfigParams = jvmJavaHomeParams + with(ScriptCompileConfigurationPrope
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
val scriptCompiler = JvmScriptCompiler(KJVMCompilerImpl(), DummyCompiledJvmScriptCache())
val environment = ScriptingEnvironment(
ScriptingEnvironmentProperties.getScriptingClass(JvmGetScriptingClass())
)
val scriptDefinition = ScriptDefinitionFromAnnotatedBaseClass(
KotlinType(MyScript::class),
ScriptingEnvironment(
ScriptingEnvironmentProperties.getScriptingClass(JvmGetScriptingClass())
)
environment
)
val host = JvmBasicScriptingHost(scriptCompiler, scriptDefinition.evaluator)
val host = JvmBasicScriptingHost(scriptCompiler, BasicJvmScriptEvaluator())
return host.eval(
scriptFile.toScriptSource(), scriptDefinition, ScriptCompileConfiguration(myJvmConfigParams), ScriptEvaluationEnvironment()
@@ -6,12 +6,9 @@
package org.jetbrains.kotlin.script.examples.jvm.simple
import kotlin.script.experimental.annotations.KotlinScript
import kotlin.script.experimental.annotations.KotlinScriptEvaluator
import kotlin.script.experimental.annotations.KotlinScriptFileExtension
import kotlin.script.experimental.jvm.runners.BasicJvmScriptEvaluator
@KotlinScript
@KotlinScriptEvaluator(BasicJvmScriptEvaluator::class)
@KotlinScriptFileExtension("simplescript.kts")
abstract class MyScript {
// abstract fun body(vararg args: String): Int