Clean and fix new scripting API
This commit is contained in:
+13
-8
@@ -18,6 +18,7 @@ import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.dependencies.DependenciesResolver
|
||||
import kotlin.script.experimental.jvm.impl.BridgeDependenciesResolver
|
||||
import kotlin.script.experimental.location.ScriptExpectedLocation
|
||||
import kotlin.script.experimental.util.chainPropertyBags
|
||||
|
||||
// temporary trick with passing Any as a template and overwriting it below, TODO: fix after introducing new script definitions hierarchy
|
||||
abstract class KotlinScriptDefinitionAdapterFromNewAPIBase : KotlinScriptDefinition(Any::class) {
|
||||
@@ -26,8 +27,12 @@ abstract class KotlinScriptDefinitionAdapterFromNewAPIBase : KotlinScriptDefinit
|
||||
|
||||
abstract val scriptFileExtensionWithDot: String
|
||||
|
||||
protected val baseCompilationConfiguration by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||
chainPropertyBags(scriptDefinition.compilationConfigurator?.defaultConfiguration, scriptDefinition.properties)
|
||||
}
|
||||
|
||||
open val baseClass: KClass<*> by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||
getScriptingClass(scriptDefinition.compilationConfigurator.defaultConfiguration[ScriptingEnvironmentProperties.baseClass])
|
||||
getScriptingClass(baseCompilationConfiguration[ScriptDefinitionProperties.baseClass])
|
||||
}
|
||||
|
||||
override val template: KClass<*> get() = baseClass
|
||||
@@ -49,28 +54,28 @@ abstract class KotlinScriptDefinitionAdapterFromNewAPIBase : KotlinScriptDefinit
|
||||
get() = emptyList()
|
||||
|
||||
override val dependencyResolver: DependenciesResolver by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||
BridgeDependenciesResolver(scriptDefinition.compilationConfigurator)
|
||||
BridgeDependenciesResolver(scriptDefinition, baseCompilationConfiguration)
|
||||
}
|
||||
|
||||
override val acceptedAnnotations: List<KClass<out Annotation>> by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||
scriptDefinition.compilationConfigurator.defaultConfiguration.getOrNull(ScriptCompileConfigurationProperties.refineConfigurationOnAnnotations)
|
||||
baseCompilationConfiguration.getOrNull(ScriptCompileConfigurationProperties.refineConfigurationOnAnnotations)
|
||||
.orEmpty()
|
||||
.map { getScriptingClass(it) as KClass<out Annotation> }
|
||||
}
|
||||
|
||||
override val implicitReceivers: List<KType> by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||
scriptDefinition.compilationConfigurator.defaultConfiguration.getOrNull(ScriptCompileConfigurationProperties.scriptImplicitReceivers)
|
||||
baseCompilationConfiguration.getOrNull(ScriptCompileConfigurationProperties.scriptImplicitReceivers)
|
||||
.orEmpty()
|
||||
.map { getScriptingClass(it).starProjectedType }
|
||||
}
|
||||
|
||||
override val environmentVariables: List<Pair<String, KType>> by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||
scriptDefinition.compilationConfigurator.defaultConfiguration.getOrNull(ScriptCompileConfigurationProperties.contextVariables)
|
||||
baseCompilationConfiguration.getOrNull(ScriptCompileConfigurationProperties.contextVariables)
|
||||
?.map { (k, v) -> k to getScriptingClass(v).starProjectedType }.orEmpty()
|
||||
}
|
||||
|
||||
override val additionalCompilerArguments: List<String>
|
||||
get() = scriptDefinition.compilationConfigurator.defaultConfiguration.getOrNull(ScriptCompileConfigurationProperties.compilerOptions)
|
||||
get() = baseCompilationConfiguration.getOrNull(ScriptCompileConfigurationProperties.compilerOptions)
|
||||
.orEmpty()
|
||||
|
||||
override val scriptExpectedLocations: List<ScriptExpectedLocation> =
|
||||
@@ -80,11 +85,11 @@ abstract class KotlinScriptDefinitionAdapterFromNewAPIBase : KotlinScriptDefinit
|
||||
)
|
||||
|
||||
override val targetClassAnnotations: List<Annotation>
|
||||
get() = scriptDefinition.compilationConfigurator.defaultConfiguration.getOrNull(ScriptCompileConfigurationProperties.generatedClassAnnotations)
|
||||
get() = baseCompilationConfiguration.getOrNull(ScriptCompileConfigurationProperties.generatedClassAnnotations)
|
||||
.orEmpty()
|
||||
|
||||
override val targetMethodAnnotations: List<Annotation>
|
||||
get() = scriptDefinition.compilationConfigurator.defaultConfiguration.getOrNull(ScriptCompileConfigurationProperties.generatedMethodAnnotations)
|
||||
get() = baseCompilationConfiguration.getOrNull(ScriptCompileConfigurationProperties.generatedMethodAnnotations)
|
||||
.orEmpty()
|
||||
|
||||
private val scriptingClassGetter by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||
|
||||
+1
-1
@@ -41,8 +41,8 @@ class LazyScriptDefinitionFromDiscoveredClass internal constructor(
|
||||
)
|
||||
try {
|
||||
ScriptDefinitionFromAnnotatedBaseClass(
|
||||
KotlinType(className),
|
||||
ScriptingEnvironment(
|
||||
ScriptingEnvironmentProperties.baseClass to KotlinType(className),
|
||||
ScriptingEnvironmentProperties.configurationDependencies to listOf(JvmDependency(classpath)),
|
||||
ScriptingEnvironmentProperties.getScriptingClass to JvmGetScriptingClass()
|
||||
)
|
||||
|
||||
+1
-1
@@ -276,8 +276,8 @@ private fun loadScriptDefinition(
|
||||
if (cls.annotations.firstIsInstanceOrNull<KotlinScript>() != null) {
|
||||
KotlinScriptDefinitionAdapterFromNewAPI(
|
||||
ScriptDefinitionFromAnnotatedBaseClass(
|
||||
KotlinType(cls.kotlin),
|
||||
ScriptingEnvironment(
|
||||
ScriptingEnvironmentProperties.baseClass to KotlinType(cls.kotlin),
|
||||
ScriptingEnvironmentProperties.getScriptingClass to JvmGetScriptingClass()
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user