diff --git a/util-tracking/src/main/scala/sbt/util/Tracked.scala b/util-tracking/src/main/scala/sbt/util/Tracked.scala index 66e84e8fb..823e9bde9 100644 --- a/util-tracking/src/main/scala/sbt/util/Tracked.scala +++ b/util-tracking/src/main/scala/sbt/util/Tracked.scala @@ -96,16 +96,20 @@ object Tracked { private final class CacheHelp[I: JsonFormat](val sc: SingletonCache[Long]) { import CacheImplicits.implicitHashWriter + import CacheImplicits.LongJsonFormat def save(store: CacheStore, value: I): Unit = { - store.write(value) + Hasher.hash(value) match { + case Success(keyHash) => store.write[Long](keyHash.toLong) + case Failure(e) => () + } } def changed(store: CacheStore, value: I): Boolean = - Try { store.read[I] } match { - case Success(prev) => + Try { store.read[Long] } match { + case Success(prev: Long) => Hasher.hash(value) match { - case Success(keyHash) => keyHash.toLong != prev - case Failure(_) => true + case Success(keyHash: Int) => keyHash.toLong != prev + case Failure(_) => true } case Failure(_) => true } diff --git a/util-tracking/src/test/scala/sbt/util/TrackedSpec.scala b/util-tracking/src/test/scala/sbt/util/TrackedSpec.scala index 90513cad6..4fa480ca7 100644 --- a/util-tracking/src/test/scala/sbt/util/TrackedSpec.scala +++ b/util-tracking/src/test/scala/sbt/util/TrackedSpec.scala @@ -51,10 +51,10 @@ class TrackedSpec extends UnitSpec { "inputChanged" should "detect that the input has not changed" in { withStore { store => - val input0 = 0 + val input0 = "foo" val res0 = - Tracked.inputChanged[Int, Int](store) { + Tracked.inputChanged[String, String](store) { case (true, in) => assert(in === input0) in @@ -64,7 +64,7 @@ class TrackedSpec extends UnitSpec { assert(res0 === input0) val res1 = - Tracked.inputChanged[Int, Int](store) { + Tracked.inputChanged[String, String](store) { case (true, in) => fail() case (false, in) =>