@@ -573,7 +573,10 @@ object CheckUnused:
573
573
val alias = m.owner.info.member(sym.name)
574
574
if alias.exists then
575
575
val aliasSym = alias.symbol
576
- if aliasSym.isAllOf(PrivateParamAccessor , butNot = CaseAccessor ) && ! infos.refs(alias.symbol) then
576
+ if aliasSym.isAllOf(PrivateParamAccessor , butNot = CaseAccessor )
577
+ && ! infos.refs(alias.symbol)
578
+ && ! usedByDefaultGetter(sym, m)
579
+ then
577
580
if aliasSym.is(Local ) then
578
581
if ctx.settings.WunusedHas .explicits then
579
582
warnAt(pos)(UnusedSymbol .explicitParams(aliasSym))
@@ -603,7 +606,7 @@ object CheckUnused:
603
606
604
607
// does the param have an alias in a default arg method that is used?
605
608
def usedByDefaultGetter (param : Symbol , meth : Symbol ): Boolean =
606
- val cls = meth.enclosingClass
609
+ val cls = if meth.isPrimaryConstructor then meth.enclosingClass.companionModule else meth.enclosingClass
607
610
val MethName = meth.name
608
611
cls.info.decls.exists: d =>
609
612
d.name match
@@ -640,7 +643,10 @@ object CheckUnused:
640
643
val checking =
641
644
aliasSym.isAllOf(PrivateParamAccessor , butNot = CaseAccessor )
642
645
|| aliasSym.isAllOf(Protected | ParamAccessor , butNot = CaseAccessor ) && m.owner.is(Given )
643
- if checking && ! infos.refs(alias.symbol) then
646
+ if checking
647
+ && ! infos.refs(alias.symbol)
648
+ && ! usedByDefaultGetter(sym, m)
649
+ then
644
650
warnAt(pos)(UnusedSymbol .implicitParams(aliasSym))
645
651
else if ! usedByDefaultGetter(sym, m) then
646
652
warnAt(pos)(UnusedSymbol .implicitParams(sym))
0 commit comments