Skip to content

Commit 88f911e

Browse files
committed
Avoid allocations when traversing TypeRefs.
1 parent f4b7d43 commit 88f911e

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/compiler/scala/tools/nsc/typechecker/Implicits.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,10 @@ trait Implicits {
482482
case AnnotatedType(annots, tp) => core(tp)
483483
case ExistentialType(tparams, result) => core(result).subst(tparams, tparams map (t => core(t.info.bounds.hi)))
484484
case PolyType(tparams, result) => core(result).subst(tparams, tparams map (t => core(t.info.bounds.hi)))
485-
case TypeRef(pre, sym, args) => typeRef(pre, sym, args.map(core))
485+
case TypeRef(pre, sym, args) =>
486+
val coreArgs = args.mapConserve(core)
487+
if (coreArgs eq args) tp
488+
else typeRef(pre, sym, coreArgs)
486489
case _ => tp
487490
}
488491

0 commit comments

Comments
 (0)