@@ -535,7 +535,10 @@ object CheckUnused:
535535 val alias = m.owner.info.member(sym.name)
536536 if alias.exists then
537537 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
539542 if aliasSym.is(Local ) then
540543 if ctx.settings.WunusedHas .explicits then
541544 warnAt(pos)(UnusedSymbol .explicitParams(aliasSym))
@@ -565,7 +568,7 @@ object CheckUnused:
565568
566569 // does the param have an alias in a default arg method that is used?
567570 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
569572 val MethName = meth.name
570573 cls.info.decls.exists: d =>
571574 d.name match
@@ -602,7 +605,10 @@ object CheckUnused:
602605 val checking =
603606 aliasSym.isAllOf(PrivateParamAccessor , butNot = CaseAccessor )
604607 || 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
606612 warnAt(pos)(UnusedSymbol .implicitParams(aliasSym))
607613 else if ! usedByDefaultGetter(sym, m) then
608614 warnAt(pos)(UnusedSymbol .implicitParams(sym))
0 commit comments