@@ -81,7 +81,7 @@ class CheckUnused extends MiniPhase:
81
81
ctx
82
82
83
83
override def prepareForIdent (tree : tpd.Ident )(using Context ): Context =
84
- if tree.symbol.exists then
84
+ if tree.symbol.exists then
85
85
_key.unusedDataApply(_.registerUsed(tree.symbol, Some (tree.name)))
86
86
else if tree.hasType then
87
87
_key.unusedDataApply(_.registerUsed(tree.tpe.classSymbol, Some (tree.name)))
@@ -103,7 +103,7 @@ class CheckUnused extends MiniPhase:
103
103
override def prepareForValDef (tree : tpd.ValDef )(using Context ): Context =
104
104
_key.unusedDataApply{ud =>
105
105
// do not register the ValDef generated for `object`
106
- if ! tree.symbol.is(Module ) then
106
+ if ! tree.symbol.is(Module ) then
107
107
ud.registerDef(tree)
108
108
ud.addIgnoredUsage(tree.symbol)
109
109
}
@@ -335,7 +335,7 @@ object CheckUnused:
335
335
* The optional name will be used to target the right import
336
336
* as the same element can be imported with different renaming
337
337
*/
338
- def registerUsed (sym : Symbol , name : Option [Name ])(using Context ): Unit =
338
+ def registerUsed (sym : Symbol , name : Option [Name ])(using Context ): Unit =
339
339
if ! isConstructorOfSynth(sym) && ! doNotRegister(sym) then
340
340
if sym.isConstructor && sym.exists then
341
341
registerUsed(sym.owner, None ) // constructor are "implicitly" imported with the class
@@ -371,7 +371,7 @@ object CheckUnused:
371
371
implicitParamInScope += memDef
372
372
else
373
373
explicitParamInScope += memDef
374
- else if currScopeType.top == ScopeType .Local then
374
+ else if currScopeType.top == ScopeType .Local then
375
375
localDefInScope += memDef
376
376
else if memDef.shouldReportPrivateDef then
377
377
privateDefInScope += memDef
@@ -578,10 +578,10 @@ object CheckUnused:
578
578
else
579
579
false
580
580
581
- private def usedDefContains (using Context ): Boolean =
581
+ private def usedDefContains (using Context ): Boolean =
582
582
sym.everySymbol.exists(usedDef.apply)
583
583
584
- private def everySymbol (using Context ): List [Symbol ] =
584
+ private def everySymbol (using Context ): List [Symbol ] =
585
585
List (sym, sym.companionClass, sym.companionModule, sym.moduleClass).filter(_.exists)
586
586
587
587
end extension
@@ -614,10 +614,11 @@ object CheckUnused:
614
614
private def isValidParam (using Context ): Boolean =
615
615
val sym = memDef.symbol
616
616
(sym.is(Param ) || sym.isAllOf(PrivateParamAccessor | Local , butNot = CaseAccessor )) &&
617
- ! isSyntheticMainParam(sym) &&
618
- ! sym.shouldNotReportParamOwner
617
+ ! isSyntheticMainParam(sym) &&
618
+ ! sym.shouldNotReportParamOwner &&
619
+ (! sym.exists || ! sym.owner.isAllOf(Synthetic | PrivateLocal ))
619
620
620
- private def shouldReportPrivateDef (using Context ): Boolean =
621
+ private def shouldReportPrivateDef (using Context ): Boolean =
621
622
currScopeType.top == ScopeType .Template && ! memDef.symbol.isConstructor && memDef.symbol.is(Private , butNot = SelfName | Synthetic | CaseAccessor )
622
623
623
624
extension (imp : tpd.Import )
0 commit comments