Skip to content

Commit f6b4559

Browse files
committed
Optimization: Avoid a closure in computeBaseData
1 parent ee5d680 commit f6b4559

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

compiler/src/dotty/tools/dotc/core/SymDenotations.scala

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1530,11 +1530,16 @@ object SymDenotations {
15301530
if (classParents.isEmpty && !emptyParentsExpected)
15311531
onBehalf.signalProvisional()
15321532
val builder = new BaseDataBuilder
1533-
for (p <- classParents)
1534-
p.classSymbol match {
1535-
case pcls: ClassSymbol => builder.addAll(pcls.baseClasses)
1536-
case _ => assert(isRefinementClass || ctx.mode.is(Mode.Interactive), s"$this has non-class parent: $p")
1537-
}
1533+
def traverse(parents: List[Type]): Unit = parents match {
1534+
case p :: parents1 =>
1535+
p.classSymbol match {
1536+
case pcls: ClassSymbol => builder.addAll(pcls.baseClasses)
1537+
case _ => assert(isRefinementClass || ctx.mode.is(Mode.Interactive), s"$this has non-class parent: $p")
1538+
}
1539+
traverse(parents1)
1540+
case nil =>
1541+
}
1542+
traverse(classParents)
15381543
(classSymbol :: builder.baseClasses, builder.baseClassSet)
15391544
}
15401545

0 commit comments

Comments
 (0)