diff --git a/libraries/scripting/common/src/kotlin/script/experimental/api/errorHandling.kt b/libraries/scripting/common/src/kotlin/script/experimental/api/errorHandling.kt index 0b64f7cdeb1..92607373821 100644 --- a/libraries/scripting/common/src/kotlin/script/experimental/api/errorHandling.kt +++ b/libraries/scripting/common/src/kotlin/script/experimental/api/errorHandling.kt @@ -310,12 +310,15 @@ fun ResultWithDiagnostics.valueOrThrow(): R = valueOr { class IterableResultsCollector { private val diagnostics = mutableListOf() + private val failureResults = mutableListOf>>() private val values = mutableListOf() fun add(result: ResultWithDiagnostics>) { - diagnostics.addAll(result.reports) if (result is ResultWithDiagnostics.Success) { + diagnostics.addAll(result.reports) values.addAll(result.value) + } else { + failureResults.add(result) } } @@ -329,7 +332,7 @@ class IterableResultsCollector { fun getResult(): ResultWithDiagnostics> { return if (values.isEmpty()) { - ResultWithDiagnostics.Failure(diagnostics) + ResultWithDiagnostics.Failure(diagnostics + failureResults.flatMap { it.reports }) } else { ResultWithDiagnostics.Success(values, diagnostics) }