scala / bug

Scala 2 bug reports only. Please, no questions — proper bug reports only.
https://scala-lang.org
232 stars 21 forks source link

-Xlint:cloneable ignores -Wconf:any settings #12985

Closed coreywoodfield closed 5 months ago

coreywoodfield commented 7 months ago

Reproduction steps

Scala version: 2.13.13

object Bar extends Cloneable {
  def f: Unit = {}
}
$ scalac Test.scala -Xlint -Wconf:any:error
Test.scala:1: warning: object Bar should not extend Cloneable.
object Bar extends Cloneable {
       ^
Test.scala:2: error: side-effecting nullary methods are discouraged: suggest defining as `def f()` instead [quickfixable]
Applicable -Wconf / @nowarn filters for this fatal warning: msg=<part of the message>, cat=lint-nullary-unit, site=Bar
  def f: Unit = {}
      ^
1 warning
1 error
$ scalac Test.scala -Xlint -Wconf:any:silent
Test.scala:1: warning: object Bar should not extend Cloneable.
object Bar extends Cloneable {
       ^
1 warning

Problem

-Xlint:cloneable level isn't changed by -Wconf:any settings, whereas -Xlint:nullary-unit and every other lint setting I've tested is

som-snytt commented 7 months ago

I'm aware that -Wconf originally configured configurable warnings, which were warnings normally collected for a "summary" report. If -Wconf can configure any warning, then all warnings must be treated the same way, including warnings that don't have a summary report.

lrytz commented 7 months ago

https://github.com/scala/scala/blob/v2.13.13/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala#L905

should use runReporting.warning

som-snytt commented 7 months ago

... should use refchecksWarning ...

I admit I avoid the overloaded runReporting.warning because of decision fatigue.