Use a mutable Set for `alreadySeen`.

This commit is contained in:
Matt Dziuban 2026-05-20 17:56:26 -04:00
parent 57e1b84997
commit 4fd24198d0
1 changed files with 5 additions and 4 deletions

View File

@ -192,7 +192,7 @@ class ClassStamper private[sbt] (
): Option[Digest] =
val builder = Set.newBuilder[Digest]
analyses.foreach: analysis =>
internalStamp(builder, javaClassName, analysis, Set.empty, log)
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*))
@ -202,7 +202,7 @@ class ClassStamper private[sbt] (
builder: mutable.Builder[Digest, Set[Digest]],
javaClassName: String,
analysis: Analysis,
alreadySeen: Set[String],
alreadySeen: mutable.Set[String],
log: Logger,
): Unit =
import analysis.relations
@ -216,7 +216,7 @@ class ClassStamper private[sbt] (
relations
.internalClassDeps(className)
.foreach: otherCN =>
internalStamp(newBuilder, otherCN, analysis, alreadySeen + javaClassName, log)
internalStamp(newBuilder, otherCN, analysis, alreadySeen, log)
// log.debug(s" internalStamp: internalDeps: $className = $internalDeps")
relations
.externalDeps(className)
@ -247,7 +247,8 @@ class ClassStamper private[sbt] (
else
stamps.get(javaClassName) match
case Some(xs) => builder ++= xs
case _ =>
case _ =>
alreadySeen += javaClassName
// Note: internalClassDeps uses Scala-encoded class name for companion objects
val classNames = relations.productClassName.reverse(javaClassName)
classNames.foreach(internalStamp0)