Skip to content

Commit 8536188

Browse files
Pass overridden decls when expanding
1 parent b3dab80 commit 8536188

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

compiler/src/dotty/tools/dotc/inlines/Inlines.scala

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ object Inlines:
186186

187187
def inlineParentTrait(parent: tpd.Tree, overriddenDecls: Set[Symbol])(using Context): List[Tree] =
188188
val traitSym = if parent.symbol.isConstructor then parent.symbol.owner else parent.symbol
189-
if traitSym.isInlineTrait then InlineParentTrait(parent, traitSym.asClass, overriddenDecls).expandDefs()
189+
if traitSym.isInlineTrait then InlineParentTrait(parent, traitSym.asClass).expandDefs(overriddenDecls)
190190
else Nil
191191

192192
/** Try to inline a pattern with an inline unapply method. Fail with error if the maximal
@@ -480,14 +480,14 @@ object Inlines:
480480
end expand
481481
end InlineCall
482482

483-
private class InlineParentTrait(parent: tpd.Tree, parentSym: ClassSymbol, overriddenDecls: Set[Symbol])(using Context) extends Inliner(parent):
483+
private class InlineParentTrait(parent: tpd.Tree, parentSym: ClassSymbol)(using Context) extends Inliner(parent):
484484
import tpd._
485485
import Inlines.*
486486

487487
private val thisInlineTrait = ThisType.raw(TypeRef(ctx.owner.prefix, ctx.owner))
488488

489-
def expandDefs(): List[Tree] =
490-
val stats = Inlines.defsToInline(parentSym).filterNot(isStatAlreadyOverridden)
489+
def expandDefs(overriddenDecls: Set[Symbol]): List[Tree] =
490+
val stats = Inlines.defsToInline(parentSym).filterNot(stat => overriddenDecls.contains(stat.symbol))
491491
val inlinedSymbols = stats.map(stat => inlinedMember(stat.symbol))
492492
stats.zip(inlinedSymbols).map(expandStat)
493493
end expandDefs
@@ -527,9 +527,6 @@ object Inlines:
527527

528528
private val localParamAccessorsNames = new mutable.HashMap[Name, Name]
529529

530-
private def isStatAlreadyOverridden(stat: Tree): Boolean =
531-
overriddenDecls.contains(stat.symbol)
532-
533530
extension (sym: Symbol)
534531
private def isTermParamAccessor: Boolean = !sym.isType && sym.is(ParamAccessor)
535532

0 commit comments

Comments
 (0)