Fixes after refactoring the API

This commit is contained in:
Ilya Chernikov
2018-03-26 19:38:16 +02:00
parent 1f0cac50d2
commit ae2af238fa
13 changed files with 63 additions and 54 deletions
@@ -8,10 +8,7 @@ package org.jetbrains.kotlin.script.examples.jvm.resolve.maven.host
import org.jetbrains.kotlin.script.examples.jvm.resolve.maven.MyScriptWithMavenDeps
import org.jetbrains.kotlin.script.examples.jvm.resolve.maven.myJvmConfig
import java.io.File
import kotlin.script.experimental.api.EvaluationResult
import kotlin.script.experimental.api.ResultWithDiagnostics
import kotlin.script.experimental.api.ScriptEvaluationEnvironment
import kotlin.script.experimental.api.toConfigEntry
import kotlin.script.experimental.api.*
import kotlin.script.experimental.definitions.ScriptDefinitionFromAnnotatedBaseClass
import kotlin.script.experimental.host.toScriptSource
import kotlin.script.experimental.jvm.DummyCompiledJvmScriptCache
@@ -21,12 +18,14 @@ import kotlin.script.experimental.jvmhost.impl.KJVMCompilerImpl
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
val scriptCompiler = JvmScriptCompiler(KJVMCompilerImpl(), DummyCompiledJvmScriptCache())
val scriptDefinition = ScriptDefinitionFromAnnotatedBaseClass(MyScriptWithMavenDeps::class)
val scriptDefinition = ScriptDefinitionFromAnnotatedBaseClass(
ScriptingEnvironment(ScriptingEnvironmentParams.baseClass to MyScriptWithMavenDeps::class)
)
val host = JvmBasicScriptingHost(
scriptDefinition.configurator,
scriptDefinition.compilationConfigurator,
scriptCompiler,
scriptDefinition.runner
scriptDefinition.evaluator
)
return host.eval(myJvmConfig { add(scriptFile.toScriptSource().toConfigEntry()) }, ScriptEvaluationEnvironment())
@@ -10,20 +10,18 @@ import org.jetbrains.kotlin.script.util.FilesAndMavenResolver
import org.jetbrains.kotlin.script.util.Repository
import org.jetbrains.kotlin.script.util.scriptCompilationClasspathFromContext
import java.io.File
import kotlin.reflect.KClass
import kotlin.script.dependencies.ScriptContents
import kotlin.script.dependencies.ScriptDependenciesResolver
import kotlin.script.experimental.annotations.KotlinScript
import kotlin.script.experimental.annotations.KotlinScriptCompilationConfigurator
import kotlin.script.experimental.annotations.KotlinScriptEvaluator
import kotlin.script.experimental.api.*
import kotlin.script.experimental.basic.DefaultScriptSelector
import kotlin.script.experimental.jvm.*
import kotlin.script.experimental.jvm.runners.BasicJvmScriptRunner
import kotlin.script.experimental.jvm.runners.BasicJvmScriptEvaluator
@KotlinScript(
DefaultScriptSelector::class,
MyConfigurator::class,
BasicJvmScriptRunner::class
)
@KotlinScript
@KotlinScriptCompilationConfigurator(MyConfigurator::class)
@KotlinScriptEvaluator(BasicJvmScriptEvaluator::class)
abstract class MyScriptWithMavenDeps {
// abstract fun body(vararg args: String): Int
}
@@ -44,12 +42,16 @@ inline fun myJvmConfig(
body()
}
class MyConfigurator(val baseClass: KClass<Any>? = null) : ScriptConfigurator {
class MyConfigurator(val environment: ScriptingEnvironment) : ScriptCompilationConfigurator {
private val resolver = FilesAndMavenResolver()
override suspend fun baseConfiguration(scriptSource: ScriptSource?): ResultWithDiagnostics<ScriptCompileConfiguration> =
myJvmConfig { add(scriptSource.toConfigEntry()) }.asSuccess()
override val defaultConfiguration = myJvmConfig {
add(ScriptCompileConfigurationParams.baseClass to environment[ScriptingEnvironmentParams.baseClass])
}
override suspend fun baseConfiguration(scriptSource: ScriptSource): ResultWithDiagnostics<ScriptCompileConfiguration> =
myJvmConfig(defaultConfiguration) { add(scriptSource.toConfigEntry()) }.asSuccess()
override suspend fun refineConfiguration(
configuration: ScriptCompileConfiguration,
@@ -25,12 +25,14 @@ inline fun myJvmConfig(
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
val scriptCompiler = JvmScriptCompiler(KJVMCompilerImpl(), DummyCompiledJvmScriptCache())
val scriptDefinition = ScriptDefinitionFromAnnotatedBaseClass(MyScript::class)
val scriptDefinition = ScriptDefinitionFromAnnotatedBaseClass(
ScriptingEnvironment(ScriptingEnvironmentParams.baseClass to MyScript::class)
)
val host = JvmBasicScriptingHost(
scriptDefinition.configurator,
scriptDefinition.compilationConfigurator,
scriptCompiler,
scriptDefinition.runner
scriptDefinition.evaluator
)
return host.eval(myJvmConfig { add(scriptFile.toScriptSource().toConfigEntry()) }, ScriptEvaluationEnvironment())
@@ -6,11 +6,11 @@
package org.jetbrains.kotlin.script.examples.jvm.simple
import kotlin.script.experimental.annotations.KotlinScript
import kotlin.script.experimental.basic.DefaultScriptSelector
import kotlin.script.experimental.basic.PassThroughConfigurator
import kotlin.script.experimental.jvm.runners.BasicJvmScriptRunner
import kotlin.script.experimental.annotations.KotlinScriptEvaluator
import kotlin.script.experimental.jvm.runners.BasicJvmScriptEvaluator
@KotlinScript(DefaultScriptSelector::class, PassThroughConfigurator::class, BasicJvmScriptRunner::class)
@KotlinScript
@KotlinScriptEvaluator(BasicJvmScriptEvaluator::class)
abstract class MyScript {
// abstract fun body(vararg args: String): Int
}
@@ -70,7 +70,7 @@ class KJVMCompilerImpl : KJVMCompilerProxy {
override fun compile(
scriptCompilerConfiguration: ScriptCompileConfiguration,
configurator: ScriptConfigurator?
configurator: ScriptCompilationConfigurator?
): ResultWithDiagnostics<CompiledScript<*>> {
val messageCollector = ScriptDiagnosticsMessageCollector()
@@ -238,7 +238,7 @@ class ScriptDiagnosticsMessageCollector : MessageCollector {
internal class BridgeScriptDefinition(
scriptCompilerConfiguration: ScriptCompileConfiguration,
scriptConfigurator: ScriptConfigurator?,
scriptConfigurator: ScriptCompilationConfigurator?,
updateClasspath: (List<File>) -> Unit
) : KotlinScriptDefinition(scriptCompilerConfiguration[ScriptCompileConfigurationParams.scriptSignature].scriptBase as KClass<out Any>) {
override val acceptedAnnotations =
@@ -21,7 +21,7 @@ import kotlin.script.experimental.jvm.mapToLegacyScriptReportPosition
import kotlin.script.experimental.jvm.mapToLegacyScriptReportSeverity
class BridgeDependenciesResolver(
val scriptConfigurator: ScriptConfigurator?,
val scriptConfigurator: ScriptCompilationConfigurator?,
val baseScriptCompilerConfiguration: ScriptCompileConfiguration = scriptConfigurator.defaultConfiguration,
val onClasspathUpdated: (List<File>) -> Unit = {}
) : AsyncDependenciesResolver {
@@ -14,7 +14,7 @@ open class JvmScriptCompiler(
val cache: CompiledJvmScriptsCache
) : ScriptCompiler {
override suspend fun compile(configuration: ScriptCompileConfiguration, configurator: ScriptConfigurator?): ResultWithDiagnostics<CompiledScript<*>> {
override suspend fun compile(configuration: ScriptCompileConfiguration, configurator: ScriptCompilationConfigurator?): ResultWithDiagnostics<CompiledScript<*>> {
val refinedConfiguration = configurator?.refineConfiguration(configuration)?.let {
when (it) {
is ResultWithDiagnostics.Failure -> return it
@@ -42,7 +42,7 @@ interface CompiledJvmScriptsCache {
interface KJVMCompilerProxy {
fun compile(
scriptCompilerConfiguration: ScriptCompileConfiguration,
configurator: ScriptConfigurator?
configurator: ScriptCompilationConfigurator?
): ResultWithDiagnostics<CompiledScript<*>>
}
@@ -19,5 +19,5 @@ inline fun jvmConfigWithJavaHome(
body()
}
val ScriptConfigurator?.defaultConfiguration: ScriptCompileConfiguration
get() = this?.let { runBlocking { baseConfiguration(null) } }?.resultOrNull() ?: ScriptCompileConfiguration()
val ScriptCompilationConfigurator?.defaultConfiguration: ScriptCompileConfiguration
get() = this?.let { runBlocking { defaultConfiguration } } ?: ScriptCompileConfiguration()
@@ -11,10 +11,10 @@ import kotlin.script.experimental.api.*
import kotlin.script.experimental.host.BasicScriptingHost
open class JvmBasicScriptingHost<ScriptBase : Any>(
configurationExtractor: ScriptConfigurator,
configurationExtractor: ScriptCompilationConfigurator,
compiler: JvmScriptCompiler,
runner: ScriptRunner<ScriptBase>
) : BasicScriptingHost<ScriptBase>(configurationExtractor, compiler, runner)
evaluator: ScriptEvaluator<ScriptBase>
) : BasicScriptingHost<ScriptBase>(configurationExtractor, compiler, evaluator)
class JvmScriptEvaluationEnvironmentParams : ScriptEvaluationEnvironmentParams() {
companion object {
@@ -5,12 +5,11 @@
package kotlin.script.experimental.jvm.runners
import kotlin.reflect.KClass
import kotlin.script.experimental.api.*
open class BasicJvmScriptRunner<ScriptBase : Any>(val baseClass: KClass<ScriptBase>? = null) : ScriptRunner<ScriptBase> {
open class BasicJvmScriptEvaluator<ScriptBase : Any>(val environment: ScriptingEnvironment) : ScriptEvaluator<ScriptBase> {
override suspend fun run(
override suspend fun eval(
compiledScript: CompiledScript<ScriptBase>,
scriptEvaluationEnvironment: ScriptEvaluationEnvironment
): ResultWithDiagnostics<EvaluationResult> =