Fix legacy definitions error propagation

also fixes script-util test with resolving errors
This commit is contained in:
Ilya Chernikov
2019-07-09 16:55:33 +02:00
parent 10e19bccb1
commit 382e55284c
4 changed files with 36 additions and 26 deletions
@@ -11,6 +11,7 @@ import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationResult
import kotlin.script.experimental.api.ScriptCompilationConfiguration
import kotlin.script.experimental.api.ScriptDiagnostic
import kotlin.script.experimental.api.valueOr
fun PsiFile.findScriptCompilationConfiguration(): ScriptCompilationConfiguration? {
@@ -35,8 +36,12 @@ fun VirtualFile.findScriptCompilationConfiguration(project: Project): ScriptComp
}
private fun ScriptCompilationConfigurationResult.valueOrError() = valueOr { failure ->
throw IllegalArgumentException(
"Error retrieving script compilation configuration: ${failure.reports.joinToString { it.message }}",
failure.reports.find { it.exception != null }?.exception
)
val singleCause = failure.reports.singleOrNull { it.severity == ScriptDiagnostic.Severity.ERROR }
if (singleCause != null)
throw IllegalStateException(singleCause.message, singleCause.exception)
else
throw IllegalStateException(
"Error retrieving script compilation configuration: ${failure.reports.joinToString { it.message }}",
failure.reports.find { it.exception != null }?.exception
)
}
@@ -219,6 +219,7 @@ fun refineScriptCompilationConfiguration(
definition: ScriptDefinition,
project: Project
): ScriptCompilationConfigurationResult {
// TODO: add location information on refinement errors
val ktFileSource = script.toKtFileSource(definition, project)
val legacyDefinition = definition.asLegacyOrNull<KotlinScriptDefinition>()
if (legacyDefinition == null) {