Implement composable refinement handlers...

for compilation and evaluation configurations.
Add utilities to apply refinements uniformly.
Also fix one invoke for list values - it was not consistent with
other builders
This commit is contained in:
Ilya Chernikov
2019-07-22 14:14:32 +02:00
parent 65e6d3b0ff
commit 0af52f2fa6
10 changed files with 240 additions and 66 deletions
@@ -31,18 +31,9 @@ open class BasicJvmScriptEvaluator : ScriptEvaluator {
}.onSuccess { importedScriptsEvalResults ->
val refinedEvalConfiguration =
configuration[ScriptEvaluationConfiguration.refineConfigurationBeforeEvaluate]
?.handler?.invoke(
ScriptEvaluationConfigurationRefinementContext(
compiledScript,
configuration
)
)
?.onFailure {
return@invoke ResultWithDiagnostics.Failure(it.reports)
}
?.valueOrNull()
?: configuration
configuration.refineBeforeEvaluation(compiledScript).valueOr {
return@invoke ResultWithDiagnostics.Failure(it.reports)
}
val resultValue = try {
val instance =
@@ -43,15 +43,10 @@ class BridgeDependenciesResolver(
val script = getScriptSource(scriptContents) ?: scriptContents.toScriptSource()
val refineResults = scriptCompilationConfiguration.refineWith(
scriptCompilationConfiguration[ScriptCompilationConfiguration.refineConfigurationOnAnnotations]?.handler,
processedScriptData, script
).onSuccess {
it.refineWith(
scriptCompilationConfiguration[ScriptCompilationConfiguration.refineConfigurationBeforeCompiling]?.handler,
processedScriptData, script
)
}
val refineResults =
scriptCompilationConfiguration.refineOnAnnotations(script, processedScriptData).onSuccess {
it.refineBeforeCompiling(script, processedScriptData)
}
val refinedConfiguration = when (refineResults) {
is ResultWithDiagnostics.Failure ->