@@ -118,6 +118,10 @@ class CheckUnused private (phaseMode: CheckUnused.PhaseMode, suffix: String, _ke
118118
119119 override def prepareForDefDef (tree : tpd.DefDef )(using Context ): Context =
120120 unusedDataApply{ ud =>
121+ if ! tree.rawMods.is(Private ) then
122+ tree.termParamss.flatten.foreach { p =>
123+ ud.addIgnoredParam(p.symbol)
124+ }
121125 import ud .registerTrivial
122126 tree.registerTrivial
123127 traverseAnnotations(tree.symbol)
@@ -350,6 +354,8 @@ object CheckUnused:
350354 /** Trivial definitions, avoid registering params */
351355 private val trivialDefs = MutSet [Symbol ]()
352356
357+ private val paramsToSkip = MutSet [Symbol ]()
358+
353359 /**
354360 * Push a new Scope of the given type, executes the given Unit and
355361 * pop it back to the original type.
@@ -396,6 +402,10 @@ object CheckUnused:
396402 def removeIgnoredUsage (sym : Symbol )(using Context ): Unit =
397403 doNotRegister --= sym.everySymbol
398404
405+ def addIgnoredParam (sym : Symbol )(using Context ): Unit =
406+ paramsToSkip += sym
407+
408+
399409
400410 /** Register an import */
401411 def registerImport (imp : tpd.Import )(using Context ): Unit =
@@ -411,7 +421,7 @@ object CheckUnused:
411421 if memDef.isValidParam then
412422 if memDef.symbol.isOneOf(GivenOrImplicit ) then
413423 implicitParamInScope += memDef
414- else
424+ else if ! paramsToSkip.contains(memDef.symbol) then
415425 explicitParamInScope += memDef
416426 else if currScopeType.top == ScopeType .Local then
417427 localDefInScope += memDef
0 commit comments