Replace dedicated configurator with definition properties + refine fun
This commit is contained in:
+12
-13
@@ -37,21 +37,20 @@ class BridgeDependenciesResolver(
|
||||
val processedScriptData =
|
||||
ProcessedScriptData(ProcessedScriptDataProperties.foundAnnotations to scriptContents.annotations)
|
||||
|
||||
val refinedConfiguration = scriptDefinition.compilationConfigurator?.let { scriptConfigurator ->
|
||||
val res = scriptConfigurator.refineConfiguration(
|
||||
scriptContents.toScriptSource(),
|
||||
calculatedBaseScriptCompilerConfiguration,
|
||||
processedScriptData
|
||||
)
|
||||
when (res) {
|
||||
is ResultWithDiagnostics.Failure ->
|
||||
return@resolveAsync DependenciesResolver.ResolveResult.Failure(res.reports.mapScriptReportsToDiagnostics())
|
||||
is ResultWithDiagnostics.Success -> {
|
||||
diagnostics.addAll(res.reports.mapScriptReportsToDiagnostics())
|
||||
res.value
|
||||
val refineFn = scriptDefinition.properties.getOrNull(ScriptCompileConfigurationProperties.refineConfiguration)
|
||||
val refinedConfiguration =
|
||||
if (refineFn == null) calculatedBaseScriptCompilerConfiguration
|
||||
else {
|
||||
val res = refineFn(scriptContents.toScriptSource(), calculatedBaseScriptCompilerConfiguration, processedScriptData)
|
||||
when (res) {
|
||||
is ResultWithDiagnostics.Failure ->
|
||||
return@resolveAsync DependenciesResolver.ResolveResult.Failure(res.reports.mapScriptReportsToDiagnostics())
|
||||
is ResultWithDiagnostics.Success -> {
|
||||
diagnostics.addAll(res.reports.mapScriptReportsToDiagnostics())
|
||||
res.value
|
||||
}
|
||||
}
|
||||
}
|
||||
} ?: calculatedBaseScriptCompilerConfiguration
|
||||
|
||||
val newClasspath = refinedConfiguration.getOrNull(ScriptCompileConfigurationProperties.dependencies)
|
||||
?.flatMap { (it as JvmDependency).classpath } ?: emptyList()
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
package kotlin.script.experimental.jvm
|
||||
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.util.chainPropertyBags
|
||||
|
||||
open class JvmScriptCompiler(
|
||||
val compilerProxy: KJVMCompilerProxy,
|
||||
@@ -19,15 +20,14 @@ open class JvmScriptCompiler(
|
||||
scriptDefinition: ScriptDefinition,
|
||||
additionalConfiguration: ScriptCompileConfiguration?
|
||||
): ResultWithDiagnostics<CompiledScript<*>> {
|
||||
val baseConfiguration = additionalConfiguration?.cloneWithNewParent(scriptDefinition.compilationConfigurator?.defaultConfiguration)
|
||||
?: scriptDefinition.compilationConfigurator?.defaultConfiguration
|
||||
?: ScriptCompileConfiguration()
|
||||
val baseConfiguration = chainPropertyBags(additionalConfiguration, scriptDefinition.properties)
|
||||
val refineConfigurationFn = baseConfiguration.getOrNull(ScriptCompileConfigurationProperties.refineConfiguration)
|
||||
val refinedConfiguration =
|
||||
if (baseConfiguration.getOrNull(ScriptCompileConfigurationProperties.refineBeforeParsing) == true) {
|
||||
if (scriptDefinition.compilationConfigurator == null) {
|
||||
if (refineConfigurationFn == null) {
|
||||
return ResultWithDiagnostics.Failure("Non-null configurator expected".asErrorDiagnostics())
|
||||
}
|
||||
scriptDefinition.compilationConfigurator!!.refineConfiguration(script, baseConfiguration).let {
|
||||
refineConfigurationFn(script, baseConfiguration).let {
|
||||
when (it) {
|
||||
is ResultWithDiagnostics.Failure -> return it
|
||||
is ResultWithDiagnostics.Success -> it.value
|
||||
|
||||
@@ -5,13 +5,8 @@
|
||||
|
||||
package kotlin.script.experimental.jvm
|
||||
|
||||
import kotlinx.coroutines.experimental.runBlocking
|
||||
import kotlin.script.experimental.api.*
|
||||
import java.io.File
|
||||
|
||||
val jvmJavaHomeParams = with(JvmScriptCompileConfigurationProperties) {
|
||||
listOf(javaHomeDir to File(System.getProperty("java.home")))
|
||||
}
|
||||
|
||||
val ScriptCompilationConfigurator?.defaultConfiguration: ScriptCompileConfiguration
|
||||
get() = this?.let { runBlocking { defaultConfiguration } } ?: ScriptCompileConfiguration()
|
||||
Reference in New Issue
Block a user