Open som-snytt opened 3 weeks ago
Relates to https://github.com/scala/bug/issues/11631
example
@nowarn("msg=shadowing a nested class of a parent is deprecated")
@deprecated("use InternalTreePrinter instead", since = "2.13.4")
class TreePrinter(out: PrintWriter) extends super.TreePrinter {
Why is it necessary to nowarn a deprecation in a deprecated program element?
I would like to answer that question without debugging the moving parts of reporting.
(And maybe the nowarn was for historical reasons.)
Reproduction steps
Scala version: 2.13.15
If a diagnostic is suppressed for any reason, it is suppressed without notice.
There is no mechanism for auditing suppression.
There are many subtle mechanisms of suppression:
-Wconf
,-nowarn
,@nowarn
,: Unit
,@unchecked
.Diagnostics may be hidden if at the same position. (
-Xdev -Vdebug
to make that verbose?)The inline mechanisms are especially dangerous, since it is unthinkable to "comment them out".
It would be nice if suppressions could be summarized by a count, or verbosely listed for a detailed audit.
Problem
If an expected diagnostic doesn't show up in a build, you have to be Stefan Zeiger to figure out why.