From ff7b5138c549a697d49b7e6a30ad707df6e7f1e0 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 9 Apr 2011 18:43:21 -0400 Subject: [PATCH] fix excessive Incomplete lifting unnecessarily led to multiple tasks reported as failing for a single cause --- main/EvaluteTask.scala | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/main/EvaluteTask.scala b/main/EvaluteTask.scala index 0309a3b9e..6cb07b36c 100644 --- a/main/EvaluteTask.scala +++ b/main/EvaluteTask.scala @@ -82,7 +82,8 @@ object EvaluateTask replaced } def transformInc[T](result: Result[T]): Result[T] = - result.toEither.left.map { i => Incomplete.transformBU(i)(convertCyclicInc andThen liftAnonymous andThen taskToKey ) } + // taskToKey needs to be before liftAnonymous. liftA only lifts non-keyed (anonymous) Incompletes. + result.toEither.left.map { i => Incomplete.transformBU(i)(convertCyclicInc andThen taskToKey andThen liftAnonymous ) } def taskToKey: Incomplete => Incomplete = { case in @ Incomplete(Some(node: Task[_]), _, _, _, _) => in.copy(node = transformNode(node)) case i => i @@ -102,7 +103,7 @@ object EvaluateTask node.info.name orElse transformNode(node).map(Project.display) getOrElse ("") def liftAnonymous: Incomplete => Incomplete = { case i @ Incomplete(node, tpe, None, causes, None) => - causes.find( inc => inc.message.isDefined || inc.directCause.isDefined) match { + causes.find( inc => !inc.node.isDefined && (inc.message.isDefined || inc.directCause.isDefined)) match { case Some(lift) => i.copy(directCause = lift.directCause, message = lift.message) case None => i }