From 05c0818236add16bae3c77769ed6ae616f2c7808 Mon Sep 17 00:00:00 2001 From: Adam Fraser Date: Wed, 20 Sep 2023 23:59:20 -0700 Subject: [PATCH] improve rendering of parallel causes (#8438) --- core/shared/src/main/scala/zio/Cause.scala | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/core/shared/src/main/scala/zio/Cause.scala b/core/shared/src/main/scala/zio/Cause.scala index 062743d8cec..4a3f085cff5 100644 --- a/core/shared/src/main/scala/zio/Cause.scala +++ b/core/shared/src/main/scala/zio/Cause.scala @@ -493,7 +493,19 @@ sealed abstract class Cause[+E] extends Product with Serializable { self => unified.trace.foreach(trace => append(s"${traceIndent}at ${trace}")) } - self.linearize.foreach(appendCause) + val (die, fail, interrupt) = + self.linearize.foldLeft((Set.empty[Cause[E]], Set.empty[Cause[E]], Set.empty[Cause[E]])) { + case ((die, fail, interrupt), cause) => + cause.find { + case Die(_, _) => (die + cause, fail, interrupt) + case Fail(_, _) => (die, fail + cause, interrupt) + case Interrupt(_, _) => (die, fail, interrupt + cause) + }.getOrElse((die, fail, interrupt)) + } + + die.foreach(appendCause) + fail.foreach(appendCause) + interrupt.foreach(appendCause) builder.result.mkString("\n") }