@@ -535,7 +535,10 @@ object CheckUnused:
535
535
val alias = m.owner.info.member(sym.name)
536
536
if alias.exists then
537
537
val aliasSym = alias.symbol
538
- if aliasSym.isAllOf(PrivateParamAccessor , butNot = CaseAccessor ) && ! infos.refs(alias.symbol) then
538
+ if aliasSym.isAllOf(PrivateParamAccessor , butNot = CaseAccessor )
539
+ && ! infos.refs(alias.symbol)
540
+ && ! usedByDefaultGetter(sym, m)
541
+ then
539
542
if aliasSym.is(Local ) then
540
543
if ctx.settings.WunusedHas .explicits then
541
544
warnAt(pos)(UnusedSymbol .explicitParams(aliasSym))
@@ -565,7 +568,7 @@ object CheckUnused:
565
568
566
569
// does the param have an alias in a default arg method that is used?
567
570
def usedByDefaultGetter (param : Symbol , meth : Symbol ): Boolean =
568
- val cls = meth.enclosingClass
571
+ val cls = if meth.isPrimaryConstructor then meth.enclosingClass.companionModule else meth.enclosingClass
569
572
val MethName = meth.name
570
573
cls.info.decls.exists: d =>
571
574
d.name match
@@ -602,7 +605,10 @@ object CheckUnused:
602
605
val checking =
603
606
aliasSym.isAllOf(PrivateParamAccessor , butNot = CaseAccessor )
604
607
|| aliasSym.isAllOf(Protected | ParamAccessor , butNot = CaseAccessor ) && m.owner.is(Given )
605
- if checking && ! infos.refs(alias.symbol) then
608
+ if checking
609
+ && ! infos.refs(alias.symbol)
610
+ && ! usedByDefaultGetter(sym, m)
611
+ then
606
612
warnAt(pos)(UnusedSymbol .implicitParams(aliasSym))
607
613
else if ! usedByDefaultGetter(sym, m) then
608
614
warnAt(pos)(UnusedSymbol .implicitParams(sym))
0 commit comments