From d6626e1e11458aa5ea5d98df8546a353acdfabda Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Thu, 10 Jun 2010 08:16:39 -0400 Subject: [PATCH] show Incomplete --- tasks/Incomplete.scala | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tasks/Incomplete.scala b/tasks/Incomplete.scala index 06b551892..1600432bd 100644 --- a/tasks/Incomplete.scala +++ b/tasks/Incomplete.scala @@ -9,4 +9,24 @@ final case class Incomplete(tpe: IValue = Error, message: Option[String] = None, object Incomplete extends Enumeration { val Skipped, Error = Value + def show(i: Incomplete, traces: Boolean): String = + { + val exceptions = allExceptions(i) + val traces = exceptions.map(_.getStackTrace).mkString("\n") + val causeStr = if(i.causes.isEmpty) "" else (i.causes.length + " cause(s)") + "Incomplete (" + show(i.tpe) + ") " + i.message.getOrElse("") + causeStr + "\n" + traces + } + def allExceptions(i: Incomplete): Iterable[Throwable] = + { + val exceptions = IDSet.create[Throwable] + val visited = IDSet.create[Incomplete] + def visit(inc: Incomplete): Unit = + visited.process(inc)( () ) { + exceptions ++= inc.directCause.toList + inc.causes.foreach(visit) + } + visit(i) + exceptions.all + } + def show(tpe: Value) = tpe match { case Skipped=> "skipped"; case Error => "error" } } \ No newline at end of file