Refactoring properties collection after review
This commit is contained in:
+6
-7
@@ -40,16 +40,15 @@ import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.dependencies.DependenciesResolver
|
||||
import kotlin.script.experimental.host.getMergedScriptText
|
||||
import kotlin.script.experimental.jvm.JvmDependency
|
||||
import kotlin.script.experimental.jvm.JvmScriptCompilationConfiguration
|
||||
import kotlin.script.experimental.jvm.impl.BridgeDependenciesResolver
|
||||
import kotlin.script.experimental.jvm.javaHome
|
||||
import kotlin.script.experimental.jvm.jvm
|
||||
import kotlin.script.experimental.jvmhost.JvmScriptEvaluationEnvironment
|
||||
import kotlin.script.experimental.jvmhost.KJvmCompilerProxy
|
||||
import kotlin.script.experimental.jvmhost.baseClassLoader
|
||||
import kotlin.script.experimental.util.getFirstFromChainOrNull
|
||||
import kotlin.script.experimental.util.getMergedFromChainOrNull
|
||||
import kotlin.script.experimental.util.getOrError
|
||||
import kotlin.script.experimental.util.getOrNull
|
||||
|
||||
class KJvmCompiledScript<out ScriptBase : Any>(
|
||||
override val definition: ScriptDefinition,
|
||||
@@ -59,9 +58,9 @@ class KJvmCompiledScript<out ScriptBase : Any>(
|
||||
) : CompiledScript<ScriptBase> {
|
||||
|
||||
override suspend fun instantiate(scriptEvaluationEnvironment: ScriptEvaluationEnvironment?): ResultWithDiagnostics<ScriptBase> = try {
|
||||
val baseClassLoader = scriptEvaluationEnvironment?.getOrNull(JvmScriptEvaluationEnvironment.baseClassLoader)
|
||||
val baseClassLoader = scriptEvaluationEnvironment?.get(JvmScriptEvaluationEnvironment.baseClassLoader)
|
||||
?: Thread.currentThread().contextClassLoader
|
||||
val dependencies = additionalConfiguration?.getOrNull(ScriptDefinition.dependencies)
|
||||
val dependencies = additionalConfiguration?.get(ScriptDefinition.dependencies)
|
||||
?.flatMap { (it as? JvmDependency)?.classpath?.map { it.toURI().toURL() } ?: emptyList() }
|
||||
// TODO: previous dependencies and classloaders should be taken into account here
|
||||
val classLoaderWithDeps =
|
||||
@@ -98,7 +97,7 @@ class KJvmCompilerImpl(val hostEnvironment: ScriptingEnvironment) : KJvmCompiler
|
||||
fun updateClasspath(classpath: List<File>) {
|
||||
environment!!.updateClasspath(classpath.map(::JvmClasspathRoot))
|
||||
if (classpath.isNotEmpty()) {
|
||||
updatedScriptCompileConfiguration = ScriptCompileConfiguration.create {
|
||||
updatedScriptCompileConfiguration = ScriptCompileConfiguration {
|
||||
include(updatedScriptCompileConfiguration)
|
||||
dependencies.append(JvmDependency(classpath))
|
||||
}
|
||||
@@ -115,7 +114,7 @@ class KJvmCompilerImpl(val hostEnvironment: ScriptingEnvironment) : KJvmCompiler
|
||||
put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
||||
|
||||
var isModularJava = false
|
||||
getFirstFromChainOrNull(JvmScriptCompilationConfiguration.javaHome, updatedScriptCompileConfiguration, hostEnvironment)?.let {
|
||||
getFirstFromChainOrNull(ScriptCompileConfiguration.jvm.javaHome, updatedScriptCompileConfiguration, hostEnvironment)?.let {
|
||||
put(JVMConfigurationKeys.JDK_HOME, it)
|
||||
isModularJava = CoreJrtFileSystem.isModularJdk(it)
|
||||
}
|
||||
@@ -254,7 +253,7 @@ internal class BridgeScriptDefinition(
|
||||
) {
|
||||
override val acceptedAnnotations = run {
|
||||
val cl = this::class.java.classLoader
|
||||
additionalCompilationConfiguration?.getOrNull(ScriptDefinition.refineConfigurationOnAnnotations)
|
||||
additionalCompilationConfiguration?.get(ScriptDefinition.refineConfigurationOnAnnotations)
|
||||
?.map { (cl.loadClass(it.typeName) as Class<out Annotation>).kotlin }
|
||||
?: emptyList()
|
||||
}
|
||||
|
||||
+2
-5
@@ -14,7 +14,7 @@ internal fun mergeConfigurations(vararg configurations: ScriptCompileConfigurati
|
||||
return when {
|
||||
nonEmptyConfigurations.isEmpty() -> null
|
||||
nonEmptyConfigurations.size == 1 -> nonEmptyConfigurations.first()!!
|
||||
else -> ScriptCompileConfiguration.create {
|
||||
else -> ScriptCompileConfiguration {
|
||||
for (configuration in nonEmptyConfigurations) {
|
||||
include(configuration!!)
|
||||
}
|
||||
@@ -28,8 +28,5 @@ fun ScriptingEnvironment.withDefaults(): ScriptingEnvironment =
|
||||
}) {
|
||||
this
|
||||
} else {
|
||||
ScriptingEnvironment.create {
|
||||
include(defaultJvmScriptingEnvironment)
|
||||
include(this)
|
||||
}
|
||||
ScriptingEnvironment(defaultJvmScriptingEnvironment, this)
|
||||
}
|
||||
|
||||
+2
-3
@@ -12,7 +12,6 @@ import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
||||
import kotlin.script.experimental.jvmhost.impl.KJvmCompilerImpl
|
||||
import kotlin.script.experimental.jvmhost.impl.mergeConfigurations
|
||||
import kotlin.script.experimental.jvmhost.impl.withDefaults
|
||||
import kotlin.script.experimental.util.getOrNull
|
||||
|
||||
interface CompiledJvmScriptsCache {
|
||||
fun get(script: ScriptSource, scriptDefinition: ScriptDefinition, configuration: ScriptCompileConfiguration?): CompiledScript<*>?
|
||||
@@ -41,9 +40,9 @@ open class JvmScriptCompiler(
|
||||
scriptDefinition: ScriptDefinition,
|
||||
additionalConfiguration: ScriptCompileConfiguration?
|
||||
): ResultWithDiagnostics<CompiledScript<*>> {
|
||||
val refineConfigurationFn = scriptDefinition.getOrNull(ScriptDefinition.refineConfigurationHandler)
|
||||
val refineConfigurationFn = scriptDefinition[ScriptDefinition.refineConfigurationHandler]
|
||||
val refinedConfiguration =
|
||||
if (scriptDefinition.getOrNull(ScriptDefinition.refineConfigurationBeforeParsing) == true) {
|
||||
if (scriptDefinition[ScriptDefinition.refineConfigurationBeforeParsing] == true) {
|
||||
if (refineConfigurationFn == null) {
|
||||
return ResultWithDiagnostics.Failure("Non-null configurator expected".asErrorDiagnostics())
|
||||
}
|
||||
|
||||
+1
-2
@@ -9,7 +9,6 @@ package kotlin.script.experimental.jvmhost
|
||||
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.util.PropertiesCollection
|
||||
import kotlin.script.experimental.util.getOrNull
|
||||
|
||||
open class JvmScriptEvaluationEnvironment : PropertiesCollection.Builder() {
|
||||
|
||||
@@ -38,7 +37,7 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
||||
if (scriptObject !is Class<*>)
|
||||
ResultWithDiagnostics.Failure(ScriptDiagnostic("expecting class in this implementation, got ${scriptObject?.javaClass}"))
|
||||
else {
|
||||
val receivers = scriptEvaluationEnvironment?.getOrNull(ScriptEvaluationEnvironment.implicitReceivers)
|
||||
val receivers = scriptEvaluationEnvironment?.get(ScriptEvaluationEnvironment.implicitReceivers)
|
||||
val instance = if (receivers == null) {
|
||||
scriptObject.getConstructor().newInstance()
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user