@@ -170,9 +170,9 @@ object Inlines:
170
170
tree2
171
171
end inlineCall
172
172
173
- def inlineParentTrait (parent : tpd.Tree )(using Context ): List [Tree ] =
173
+ def inlineParentTrait (parent : tpd.Tree , childOverrideDecls : Set [ Symbol ] )(using Context ): List [Tree ] =
174
174
val traitSym = if parent.symbol.isConstructor then parent.symbol.owner else parent.symbol
175
- if traitSym.isInlineTrait then InlineParentTrait (parent, traitSym).expandDefs()
175
+ if traitSym.isInlineTrait then InlineParentTrait (parent, traitSym, childOverrideDecls ).expandDefs()
176
176
else Nil
177
177
178
178
/** Try to inline a pattern with an inline unapply method. Fail with error if the maximal
@@ -466,14 +466,15 @@ object Inlines:
466
466
end expand
467
467
end InlineCall
468
468
469
- private class InlineParentTrait (parent : tpd.Tree , parentSym : Symbol )(using Context ) extends Inliner (parent):
469
+ private class InlineParentTrait (parent : tpd.Tree , parentSym : Symbol , overriddenDecls : Set [ Symbol ] )(using Context ) extends Inliner (parent):
470
470
import tpd ._
471
471
import Inlines .*
472
472
473
473
def expandDefs (): List [Tree ] =
474
474
val tpd .Block (stats, _) = Inlines .bodyToInline(parentSym): @ unchecked
475
- val inlinedSymbols = stats.map(stat => inlinedMember(stat.symbol))
476
- stats.zip(inlinedSymbols).map(expandStat)// .map(inlined(_)._2)
475
+ val stats1 = stats.filterNot(isMemberOverridden)
476
+ val inlinedSymbols = stats1.map(stat => inlinedMember(stat.symbol))
477
+ stats1.zip(inlinedSymbols).map(expandStat)// .map(inlined(_)._2)
477
478
end expandDefs
478
479
479
480
private val argsMap : Map [Name , Tree ] =
@@ -498,6 +499,9 @@ object Inlines:
498
499
case t => mapOver(t)
499
500
}
500
501
502
+ private def isMemberOverridden (stat : Tree ): Boolean =
503
+ overriddenDecls.flatMap(_.allOverriddenSymbols).toSet.contains(stat.symbol)
504
+
501
505
private def expandStat (stat : tpd.Tree , inlinedSym : Symbol ): tpd.Tree = stat match
502
506
case stat : ValDef if stat.symbol.is(ParamAccessor ) =>
503
507
tpd.ValDef (inlinedSym.asTerm, argsMap(inlinedSym.name.asTermName)).withSpan(parent.span)
0 commit comments