@@ -15,7 +15,7 @@ import dotty.tools.dotc.core.StdNames.nme
15
15
import dotty .tools .dotc .core .Symbols .{ClassSymbol , NoSymbol , Symbol , defn , isDeprecated , requiredClass , requiredModule }
16
16
import dotty .tools .dotc .core .Types .*
17
17
import dotty .tools .dotc .report
18
- import dotty .tools .dotc .reporting .{CodeAction , UnusedSymbol }
18
+ import dotty .tools .dotc .reporting .{Action , CodeAction , Diagnostic , UnusedSymbol , WConf }
19
19
import dotty .tools .dotc .rewrites .Rewrites
20
20
import dotty .tools .dotc .transform .MegaPhase .MiniPhase
21
21
import dotty .tools .dotc .typer .{ImportInfo , Typer }
@@ -559,7 +559,20 @@ object CheckUnused:
559
559
for (msg, pos, origin) <- warnings do
560
560
if origin.isEmpty then report.warning(msg, pos)
561
561
else report.warning(msg, pos, origin)
562
- msg.actions.headOption.foreach(Rewrites .applyAction)
562
+ // avoid rewrite if warning will be suppressed (would be nice if reporter knew how to apply actions)
563
+ msg.actions.headOption match
564
+ case Some (action) if ctx.run != null =>
565
+ val dia =
566
+ if origin.isEmpty then Diagnostic .Warning (msg, pos.sourcePos)
567
+ else Diagnostic .LintWarning (msg, pos.sourcePos, origin)
568
+ ctx.run.nn.suppressions.nowarnAction(dia) match
569
+ case Action .Warning =>
570
+ WConf .parsed.action(dia) match
571
+ case Action .Error | Action .Warning =>
572
+ Rewrites .applyAction(action)
573
+ case _ =>
574
+ case _ =>
575
+ case _ =>
563
576
564
577
type MessageInfo = (UnusedSymbol , SrcPos , String ) // string is origin or empty
565
578
0 commit comments