Replace dedicated configurator with definition properties + refine fun

This commit is contained in:
Ilya Chernikov
2018-07-15 19:42:42 +02:00
parent a54675abe7
commit e61ba1fd70
15 changed files with 76 additions and 124 deletions
@@ -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()