@@ -574,12 +574,14 @@ object CheckUnused:
574
574
private def shouldNotReportParamOwner (using Context ): Boolean =
575
575
if sym.exists then
576
576
val owner = sym.owner
577
- trivialDefs(owner) ||
578
- owner.is(Flags .Override ) ||
577
+ trivialDefs(owner) || // is a trivial def
579
578
owner.isPrimaryConstructor ||
580
- owner.annotations.exists (
579
+ owner.annotations.exists ( // @depreacated
581
580
_.symbol == ctx.definitions.DeprecatedAnnot
582
- )
581
+ ) ||
582
+ owner.isAllOf(Synthetic | PrivateLocal ) ||
583
+ owner.is(Accessor ) ||
584
+ owner.isOverriden
583
585
else
584
586
false
585
587
@@ -589,6 +591,11 @@ object CheckUnused:
589
591
private def everySymbol (using Context ): List [Symbol ] =
590
592
List (sym, sym.companionClass, sym.companionModule, sym.moduleClass).filter(_.exists)
591
593
594
+ /** A function is overriden. Either has `override flags` or parent has a matching member (type and name) */
595
+ private def isOverriden (using Context ): Boolean =
596
+ sym.is(Flags .Override ) ||
597
+ (if sym.exists then sym.owner.thisType.parents.exists(p => sym.matchingMember(p).exists) else false )
598
+
592
599
end extension
593
600
594
601
extension (defdef : tpd.DefDef )
@@ -620,8 +627,8 @@ object CheckUnused:
620
627
val sym = memDef.symbol
621
628
(sym.is(Param ) || sym.isAllOf(PrivateParamAccessor | Local , butNot = CaseAccessor )) &&
622
629
! isSyntheticMainParam(sym) &&
623
- ! sym.shouldNotReportParamOwner &&
624
- ( ! sym.exists || ! (sym.owner.isAllOf( Synthetic | PrivateLocal ) || sym.owner.is( Accessor )))
630
+ ! sym.shouldNotReportParamOwner
631
+
625
632
626
633
private def shouldReportPrivateDef (using Context ): Boolean =
627
634
currScopeType.top == ScopeType .Template && ! memDef.symbol.isConstructor && memDef.symbol.is(Private , butNot = SelfName | Synthetic | CaseAccessor )
0 commit comments