[minor] Renames and rearrangements for clarity

This commit is contained in:
Ilya Chernikov
2018-03-28 14:28:07 +02:00
parent 5058c66e8c
commit 4a4edf3458
22 changed files with 58 additions and 49 deletions
@@ -40,7 +40,7 @@ import kotlin.concurrent.read
import kotlin.concurrent.write
import kotlin.script.dependencies.Environment
import kotlin.script.dependencies.ScriptContents
import kotlin.script.experimental.api.ChainedPropertyBag
import kotlin.script.experimental.api.ScriptingEnvironment
import kotlin.script.experimental.api.ScriptingEnvironmentProperties
import kotlin.script.experimental.definitions.ScriptDefinitionFromAnnotatedBaseClass
import kotlin.script.experimental.dependencies.DependenciesResolver
@@ -165,7 +165,7 @@ fun loadDefinitionsFromTemplates(
}
template.annotations.firstIsInstanceOrNull<kotlin.script.experimental.annotations.KotlinScript>() != null -> {
KotlinScriptDefinitionAdapterFromNewAPI(
ScriptDefinitionFromAnnotatedBaseClass(ChainedPropertyBag(ScriptingEnvironmentProperties.baseClass to template))
ScriptDefinitionFromAnnotatedBaseClass(ScriptingEnvironment(ScriptingEnvironmentProperties.baseClass to template))
)
}
else -> {
@@ -19,7 +19,7 @@ import kotlin.script.experimental.jvmhost.impl.KJVMCompilerImpl
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
val scriptCompiler = JvmScriptCompiler(KJVMCompilerImpl(), DummyCompiledJvmScriptCache())
val scriptDefinition = ScriptDefinitionFromAnnotatedBaseClass(
ChainedPropertyBag(ScriptingEnvironmentProperties.baseClass to MyScriptWithMavenDeps::class)
ScriptingEnvironment(ScriptingEnvironmentProperties.baseClass to MyScriptWithMavenDeps::class)
)
val host = JvmBasicScriptingHost(
@@ -28,7 +28,7 @@ fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
scriptDefinition.evaluator
)
return host.eval(scriptFile.toScriptSource(), ChainedPropertyBag(null, myJvmConfigParams), ScriptEvaluationEnvironment())
return host.eval(scriptFile.toScriptSource(), ScriptCompileConfiguration(myJvmConfigParams), ScriptEvaluationEnvironment())
}
fun main(vararg args: String) {
@@ -43,11 +43,11 @@ val myJvmConfigParams = jvmJavaHomeParams + with(ScriptCompileConfigurationPrope
)
}
class MyConfigurator(val environment: ChainedPropertyBag) : ScriptCompilationConfigurator {
class MyConfigurator(val environment: ScriptingEnvironment) : ScriptCompilationConfigurator {
private val resolver = FilesAndMavenResolver()
override val defaultConfiguration = ChainedPropertyBag(environment, myJvmConfigParams)
override val defaultConfiguration = ScriptCompileConfiguration(environment, myJvmConfigParams)
override suspend fun baseConfiguration(scriptSource: ScriptSource): ResultWithDiagnostics<ScriptCompileConfiguration> =
defaultConfiguration.asSuccess()
@@ -57,7 +57,7 @@ class MyConfigurator(val environment: ChainedPropertyBag) : ScriptCompilationCon
configuration: ScriptCompileConfiguration,
processedScriptData: ProcessedScriptData
): ResultWithDiagnostics<ScriptCompileConfiguration> {
val annotations = processedScriptData.getOrNull(ProcessedScriptDataProperties.foundAnnotations)?.toList()?.takeIf { it.isNotEmpty() }
val annotations = processedScriptData.getOrNull(ProcessedScriptDataProperties.foundAnnotations)?.takeIf { it.isNotEmpty() }
?: return configuration.asSuccess()
val scriptContents = object : ScriptContents {
override val annotations: Iterable<Annotation> = annotations
@@ -76,7 +76,7 @@ class MyConfigurator(val environment: ChainedPropertyBag) : ScriptCompilationCon
val newDependency = JvmDependency(resolvedClasspath)
val updatedDeps =
configuration.getOrNull(ScriptCompileConfigurationProperties.dependencies)?.plus(newDependency) ?: listOf(newDependency)
ChainedPropertyBag(configuration, ScriptCompileConfigurationProperties.dependencies(updatedDeps)).asSuccess(diagnostics)
ScriptCompileConfiguration(configuration, ScriptCompileConfigurationProperties.dependencies(updatedDeps)).asSuccess(diagnostics)
} catch (e: Throwable) {
ResultWithDiagnostics.Failure(*diagnostics.toTypedArray(), e.asDiagnostics())
}
@@ -25,7 +25,7 @@ val myJvmConfigParams = jvmJavaHomeParams + with(ScriptCompileConfigurationPrope
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
val scriptCompiler = JvmScriptCompiler(KJVMCompilerImpl(), DummyCompiledJvmScriptCache())
val scriptDefinition = ScriptDefinitionFromAnnotatedBaseClass(
ChainedPropertyBag(ScriptingEnvironmentProperties.baseClass to MyScript::class)
ScriptingEnvironment(ScriptingEnvironmentProperties.baseClass to MyScript::class)
)
val host = JvmBasicScriptingHost(
@@ -34,7 +34,7 @@ fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
scriptDefinition.evaluator
)
return host.eval(scriptFile.toScriptSource(), ChainedPropertyBag(null, myJvmConfigParams), ScriptEvaluationEnvironment())
return host.eval(scriptFile.toScriptSource(), ScriptCompileConfiguration(myJvmConfigParams), ScriptEvaluationEnvironment())
}
fun main(vararg args: String) {
@@ -7,6 +7,8 @@
package kotlin.script.experimental.api
import kotlin.script.experimental.util.typedKey
object ProcessedScriptDataProperties {
val foundAnnotations by typedKey<List<Annotation>>()
@@ -7,6 +7,8 @@
package kotlin.script.experimental.api
import kotlin.script.experimental.util.ChainedPropertyBag
typealias ScriptCompileConfiguration = ChainedPropertyBag
@@ -15,7 +17,7 @@ typealias ProcessedScriptData = ChainedPropertyBag
interface ScriptCompilationConfigurator {
// constructor(environment: ChainedPropertyBag) // the constructor is expected from implementations
// constructor(environment: ScriptingEnvironment) // the constructor is expected from implementations
val defaultConfiguration: ScriptCompileConfiguration
@@ -9,6 +9,7 @@ package kotlin.script.experimental.api
import kotlin.reflect.KClass
import kotlin.reflect.KType
import kotlin.script.experimental.util.typedKey
object ScriptCompileConfigurationProperties {
@@ -7,15 +7,25 @@
package kotlin.script.experimental.api
import kotlin.script.experimental.util.ChainedPropertyBag
import kotlin.script.experimental.util.typedKey
typealias ScriptDefinitionPropertiesBag = ChainedPropertyBag
interface ScriptDefinition {
// constructor(environment: ChainedPropertyBag) // the constructor is expected from implementations
// constructor(environment: ScriptingEnvironment) // the constructor is expected from implementations
val properties: ChainedPropertyBag
val properties: ScriptDefinitionPropertiesBag
val compilationConfigurator: ScriptCompilationConfigurator
val evaluator: ScriptEvaluator<*>?
}
object ScriptDefinitionProperties {
val name by typedKey<String>() // Name of the script type, by default "Kotlin script"
val fileExtension by typedKey<String>() // default: "kts"
}
@@ -1,16 +0,0 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("unused")
package kotlin.script.experimental.api
object ScriptDefinitionProperties {
val name by typedKey<String>() // Name of the script type, by default "Kotlin script"
val fileExtension by typedKey<String>() // default: "kts"
}
@@ -7,6 +7,9 @@
package kotlin.script.experimental.api
import kotlin.script.experimental.util.ChainedPropertyBag
import kotlin.script.experimental.util.typedKey
object ScriptEvaluationEnvironmentParams {
val implicitReceivers by typedKey<List<Any>>()
@@ -24,7 +27,7 @@ data class EvaluationResult(val returnValue: Any?, val environment: ScriptEvalua
// NOTE: name inconsistency: run vs evaluate
interface ScriptEvaluator<in ScriptBase : Any> {
// constructor(environment: ChainedPropertyBag) // the constructor is expected from implementations
// constructor(environment: ScriptingEnvironment) // the constructor is expected from implementations
suspend fun eval(
compiledScript: CompiledScript<ScriptBase>,
@@ -6,6 +6,10 @@
package kotlin.script.experimental.api
import kotlin.reflect.KClass
import kotlin.script.experimental.util.ChainedPropertyBag
import kotlin.script.experimental.util.typedKey
typealias ScriptingEnvironment = ChainedPropertyBag
object ScriptingEnvironmentProperties {
@@ -8,7 +8,7 @@ package kotlin.script.experimental.basic
import kotlin.script.experimental.api.*
class PassThroughCompilationConfigurator(val environment: ChainedPropertyBag) : ScriptCompilationConfigurator {
class PassThroughCompilationConfigurator(val environment: ScriptingEnvironment) : ScriptCompilationConfigurator {
override val defaultConfiguration = ScriptCompileConfiguration(environment)
@@ -23,7 +23,7 @@ class PassThroughCompilationConfigurator(val environment: ChainedPropertyBag) :
configuration.asSuccess()
}
class DummyEvaluator<ScriptBase : Any>(val environment: ChainedPropertyBag) : ScriptEvaluator<ScriptBase> {
class DummyEvaluator<ScriptBase : Any>(val environment: ScriptingEnvironment) : ScriptEvaluator<ScriptBase> {
override suspend fun eval(
compiledScript: CompiledScript<ScriptBase>,
scriptEvaluationEnvironment: ScriptEvaluationEnvironment
@@ -15,10 +15,11 @@ import kotlin.script.experimental.annotations.KotlinScriptFileExtension
import kotlin.script.experimental.api.*
import kotlin.script.experimental.basic.DummyEvaluator
import kotlin.script.experimental.basic.PassThroughCompilationConfigurator
import kotlin.script.experimental.util.TypedKey
private const val ERROR_MSG_PREFIX = "Unable to construct script definition: "
open class ScriptDefinitionFromAnnotatedBaseClass(val environment: ChainedPropertyBag) : ScriptDefinition {
open class ScriptDefinitionFromAnnotatedBaseClass(val environment: ScriptingEnvironment) : ScriptDefinition {
private val baseClass: KClass<*> = environment.getOrNull(ScriptingEnvironmentProperties.baseClass)
?: throw IllegalArgumentException("${ERROR_MSG_PREFIX}Expecting baseClass parameter in the scripting environment")
@@ -29,13 +30,13 @@ open class ScriptDefinitionFromAnnotatedBaseClass(val environment: ChainedProper
private val explicitDefinition: ScriptDefinition? =
mainAnnotation.definition.takeIf { it != this::class }?.let { it.instantiateScriptHandler() }
override val properties = (explicitDefinition?.properties ?: ChainedPropertyBag()).also { properties ->
override val properties = (explicitDefinition?.properties ?: ScriptingEnvironment()).also { properties ->
val toAdd = arrayListOf<Pair<TypedKey<*>, Any>>()
baseClass.findAnnotation<KotlinScriptFileExtension>()?.let { toAdd += ScriptDefinitionProperties.fileExtension to it }
if (properties.getOrNull(ScriptDefinitionProperties.name) == null) {
toAdd += ScriptDefinitionProperties.name to baseClass.simpleName!!
}
ChainedPropertyBag(properties, toAdd)
ScriptingEnvironment(properties, toAdd)
}
override val compilationConfigurator =
@@ -31,11 +31,11 @@ abstract class BasicScriptingHost<ScriptBase : Any>(
open fun eval(
script: ScriptSource,
configuration: ScriptCompileConfiguration,
compileConfiguration: ScriptCompileConfiguration,
environment: ScriptEvaluationEnvironment
): ResultWithDiagnostics<EvaluationResult> =
runInCoroutineContext {
val compiled = compiler.compile(script, configuration, configurator)
val compiled = compiler.compile(script, compileConfiguration, configurator)
when (compiled) {
is ResultWithDiagnostics.Failure -> compiled
is ResultWithDiagnostics.Success -> {
@@ -1,9 +1,11 @@
/*
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package kotlin.script.experimental.api
@file:Suppress("unused")
package kotlin.script.experimental.util
import kotlin.reflect.KProperty
@@ -16,6 +18,7 @@ class TypedKeyDelegate<T> {
fun <T> typedKey() = TypedKeyDelegate<T>()
class ChainedPropertyBag(private val parent: ChainedPropertyBag? = null, pairs: Iterable<Pair<TypedKey<*>, Any?>>) {
constructor(pairs: Iterable<Pair<TypedKey<*>, Any?>>) : this(null, pairs)
constructor(parent: ChainedPropertyBag, vararg pairs: Pair<TypedKey<*>, Any?>) : this(parent, pairs.asIterable())
constructor(vararg pairs: Pair<TypedKey<*>, Any?>) : this(null, pairs.asIterable())
@@ -90,7 +90,7 @@ class KJVMCompilerImpl : KJVMCompilerProxy {
val updatedDeps = updatedScriptCompileConfiguration.getOrNull(ScriptCompileConfigurationProperties.dependencies)?.plus(
JvmDependency(classpath)
) ?: listOf(JvmDependency(classpath))
updatedScriptCompileConfiguration = ChainedPropertyBag(
updatedScriptCompileConfiguration = ScriptCompileConfiguration(
updatedScriptCompileConfiguration,
ScriptCompileConfigurationProperties.dependencies to updatedDeps
)
@@ -3,11 +3,13 @@
* that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("unused")
package kotlin.script.experimental.jvm
import java.io.File
import kotlin.script.experimental.api.ScriptDependency
import kotlin.script.experimental.api.typedKey
import kotlin.script.experimental.util.typedKey
object JvmScriptCompileConfigurationProperties {
val javaHomeDir by typedKey<File>()
@@ -9,8 +9,8 @@ package kotlin.script.experimental.jvm
import kotlin.script.experimental.api.ScriptCompilationConfigurator
import kotlin.script.experimental.api.ScriptEvaluator
import kotlin.script.experimental.api.typedKey
import kotlin.script.experimental.host.BasicScriptingHost
import kotlin.script.experimental.util.typedKey
open class JvmBasicScriptingHost<ScriptBase : Any>(
configurationExtractor: ScriptCompilationConfigurator,
@@ -7,7 +7,7 @@ package kotlin.script.experimental.jvm.runners
import kotlin.script.experimental.api.*
open class BasicJvmScriptEvaluator<ScriptBase : Any>(val environment: ChainedPropertyBag) : ScriptEvaluator<ScriptBase> {
open class BasicJvmScriptEvaluator<ScriptBase : Any>(val environment: ScriptingEnvironment) : ScriptEvaluator<ScriptBase> {
override suspend fun eval(
compiledScript: CompiledScript<ScriptBase>,
@@ -6,7 +6,7 @@
package kotlin.script.experimental.misc
import kotlin.reflect.KClass
import kotlin.script.experimental.api.TypedKey
import kotlin.script.experimental.util.TypedKey
inline operator fun <reified T> TypedKey<T>.invoke(v: T): Pair<TypedKey<T>, T> = this to v
@@ -15,9 +15,6 @@ inline operator fun <reified K> TypedKey<KClass<*>>.invoke(): Pair<TypedKey<KCla
inline operator fun <reified E> TypedKey<List<E>>.invoke(vararg vs: E): Pair<TypedKey<List<E>>, List<E>> = this to vs.toList()
@JvmName("invokeIterable")
inline operator fun <reified E> TypedKey<Iterable<E>>.invoke(vararg vs: E): Pair<TypedKey<Iterable<E>>, Iterable<E>> = this to vs.toList()
inline operator fun <reified K, reified V> TypedKey<Map<K, V>>.invoke(vararg vs: Pair<K, V>): Pair<TypedKey<Map<K, V>>, Map<K, V>> =
this to hashMapOf(*vs)
@@ -20,7 +20,7 @@ import java.io.File
import java.io.IOException
import java.net.URLClassLoader
import java.util.jar.JarFile
import kotlin.script.experimental.api.ChainedPropertyBag
import kotlin.script.experimental.api.ScriptingEnvironment
import kotlin.script.experimental.api.ScriptingEnvironmentProperties
import kotlin.script.experimental.definitions.ScriptDefinitionFromAnnotatedBaseClass
@@ -127,7 +127,7 @@ fun configureScriptDefinitions(
val def =
if (cls.annotations.firstIsInstanceOrNull<kotlin.script.experimental.annotations.KotlinScript>() != null) {
KotlinScriptDefinitionAdapterFromNewAPI(
ScriptDefinitionFromAnnotatedBaseClass(ChainedPropertyBag(ScriptingEnvironmentProperties.baseClass to cls.kotlin))
ScriptDefinitionFromAnnotatedBaseClass(ScriptingEnvironment(ScriptingEnvironmentProperties.baseClass to cls.kotlin))
)
} else {
KotlinScriptDefinitionFromAnnotatedTemplate(cls.kotlin, scriptResolverEnv)