diff --git a/cache/tracking/src/main/scala/sbt/Tracked.scala b/cache/tracking/src/main/scala/sbt/Tracked.scala index 5965fc135..0de466686 100644 --- a/cache/tracking/src/main/scala/sbt/Tracked.scala +++ b/cache/tracking/src/main/scala/sbt/Tracked.scala @@ -38,7 +38,8 @@ object Tracked { toFile(next)(cacheFile) next } - private[sbt] def lastOuputWithJson[I, O: Pickler: Unpickler](cacheFile: File)(f: (I, Option[O]) => O): I => O = in => + // Todo: This function needs more testing. + private[sbt] def lastOutputWithJson[I, O: Pickler: Unpickler](cacheFile: File)(f: (I, Option[O]) => O): I => O = in => { val previous: Option[O] = try { fromJsonFile[O](cacheFile).toOption diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index bb12ba97b..44b4062c5 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -1388,13 +1388,13 @@ object Classpaths { val outCacheFile = cacheFile / "output" def skipWork: In => UpdateReport = - Tracked.lastOuputWithJson[In, UpdateReport](outCacheFile) { + Tracked.lastOutput[In, UpdateReport](outCacheFile) { case (_, Some(out)) => out case _ => sys.error("Skipping update requested, but update has not previously run successfully.") } def doWork: In => UpdateReport = Tracked.inputChanged(cacheFile / "inputs") { (inChanged: Boolean, in: In) => - val outCache = Tracked.lastOuputWithJson[In, UpdateReport](outCacheFile) { + val outCache = Tracked.lastOutput[In, UpdateReport](outCacheFile) { case (_, Some(out)) if uptodate(inChanged, out) => out case _ => work(in) }