@@ -573,7 +573,10 @@ object CheckUnused:
573573 val alias = m.owner.info.member(sym.name)
574574 if alias.exists then
575575 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
577580 if aliasSym.is(Local ) then
578581 if ctx.settings.WunusedHas .explicits then
579582 warnAt(pos)(UnusedSymbol .explicitParams(aliasSym))
@@ -603,7 +606,7 @@ object CheckUnused:
603606
604607 // does the param have an alias in a default arg method that is used?
605608 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
607610 val MethName = meth.name
608611 cls.info.decls.exists: d =>
609612 d.name match
@@ -640,7 +643,10 @@ object CheckUnused:
640643 val checking =
641644 aliasSym.isAllOf(PrivateParamAccessor , butNot = CaseAccessor )
642645 || 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
644650 warnAt(pos)(UnusedSymbol .implicitParams(aliasSym))
645651 else if ! usedByDefaultGetter(sym, m) then
646652 warnAt(pos)(UnusedSymbol .implicitParams(sym))
0 commit comments