This commit is contained in:
Matt Dziuban 2026-05-22 10:20:16 -04:00
parent 4fd24198d0
commit ee192ead15
1 changed files with 13 additions and 7 deletions

View File

@ -190,14 +190,20 @@ class ClassStamper private[sbt] (
extraHashes: Seq[Digest],
log: Logger,
): Option[Digest] =
val builder = Set.newBuilder[Digest]
analyses.foreach: analysis =>
internalStamp(builder, javaClassName, analysis, mutable.Set.empty, log)
val digests = builder.result().toSeq.sorted
// log.debug(s"test: transitiveStamp($javaClassName, $extraHashes) = $digests")
if digests.nonEmpty then Some(Digest.sha256Hash(digests ++ extraHashes*))
val digests = transitiveStamps(javaClassName, extraHashes, log)
if digests.nonEmpty then Some(Digest.sha256Hash(digests*))
else None
private def transitiveStamps(
javaClassName: String,
extraHashes: Seq[Digest],
log: Logger,
): Seq[Digest] =
val builder = Set.newBuilder[Digest]
analyses.foreach(internalStamp(builder, javaClassName, _, mutable.Set.empty, log))
val digests = builder.result().toSeq.sorted
digests ++ extraHashes
private def internalStamp(
builder: mutable.Builder[Digest, Set[Digest]],
javaClassName: String,
@ -221,7 +227,7 @@ class ClassStamper private[sbt] (
relations
.externalDeps(className)
.foreach: libClassName =>
newBuilder ++= transitiveStamp(libClassName, Nil, log)
newBuilder ++= transitiveStamps(libClassName, Nil, log)
relations
.externalDeps(className)
.foreach: libClassName =>