From c9ba9502a77a1ed2bf3328b21173165c56d7d14b Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Fri, 13 Jan 2017 14:22:49 +0000 Subject: [PATCH] Work-around actions/depends-on failure --- tasks-standard/src/main/scala/sbt/std/TaskExtra.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tasks-standard/src/main/scala/sbt/std/TaskExtra.scala b/tasks-standard/src/main/scala/sbt/std/TaskExtra.scala index d14b1fad0..96c2678ee 100644 --- a/tasks-standard/src/main/scala/sbt/std/TaskExtra.scala +++ b/tasks-standard/src/main/scala/sbt/std/TaskExtra.scala @@ -6,7 +6,7 @@ package std import scala.sys.process.{ BasicIO, ProcessIO, ProcessBuilder } -import sbt.internal.util.AList +import sbt.internal.util.{ AList, AttributeMap } import sbt.internal.util.Types._ import java.io.{ BufferedInputStream, BufferedReader, File, InputStream } import sbt.io.IO @@ -120,7 +120,10 @@ trait TaskExtra { def failure: Task[Incomplete] = mapFailure(idFun) def result: Task[Result[S]] = mapR(idFun) - private def newInfo[A]: Info[A] = Info[A](in.info.attributes) + // The "taskDefinitionKey" is used, at least, by the ".previous" functionality. + // But apparently it *cannot* survive a task map/flatMap/etc. See actions/depends-on. + private def newInfo[A]: Info[A] = + Info[A](AttributeMap(in.info.attributes.entries.filter(_.key.label != "taskDefinitionKey"))) def flatMapR[T](f: Result[S] => Task[T]): Task[T] = Task(newInfo, new FlatMapped[T, K](in, f, ml)) def mapR[T](f: Result[S] => T): Task[T] = Task(newInfo, new Mapped[T, K](in, f, ml))