If "foo" is any non-mandatory lint category (for example, "serial") then a javac flag like "-Xlint:none,foo" is being handled incorrectly by the compiler.
Whereas "-Xlint:all,-foo" means "Enable all categories, then remove foo", the flag "-Xlint:none,foo" should mean "Disable all categories, then add foo".
However, the actual effect of "-Xlint:none,foo" is the same as "-Xlint:none", that is, "Disable all categories, period."
Reproducer:
$ cat NoSUID.java
class NoSUID implements java.io.Serializable { }
$ javac -Xlint:all NoSUID.java
NoSUID.java:1: warning: [serial] serializable class NoSUID has no definition of serialVersionUID
class NoSUID implements java.io.Serializable { }
^
1 warning
$ javac -Xlint:all,-serial NoSUID.java
$ javac -Xlint:none NoSUID.java
$ javac -Xlint:none,serial NoSUID.java # MISSING WARNING HERE
$ javac -Xlint:serial NoSUID.java
NoSUID.java:1: warning: [serial] serializable class NoSUID has no definition of serialVersionUID
class NoSUID implements java.io.Serializable { }
^
1 warning
$ javac -version
javac 24
Whereas "-Xlint:all,-foo" means "Enable all categories, then remove foo", the flag "-Xlint:none,foo" should mean "Disable all categories, then add foo".
However, the actual effect of "-Xlint:none,foo" is the same as "-Xlint:none", that is, "Disable all categories, period."
Reproducer:
$ cat NoSUID.java
class NoSUID implements java.io.Serializable { }
$ javac -Xlint:all NoSUID.java
NoSUID.java:1: warning: [serial] serializable class NoSUID has no definition of serialVersionUID
class NoSUID implements java.io.Serializable { }
^
1 warning
$ javac -Xlint:all,-serial NoSUID.java
$ javac -Xlint:none NoSUID.java
$ javac -Xlint:none,serial NoSUID.java # MISSING WARNING HERE
$ javac -Xlint:serial NoSUID.java
NoSUID.java:1: warning: [serial] serializable class NoSUID has no definition of serialVersionUID
class NoSUID implements java.io.Serializable { }
^
1 warning
$ javac -version
javac 24
- caused by
-
JDK-6183484 javac defines -nowarn to be the same as -Xlint:none but it isn't
-
- Closed
-
- csr for
-
JDK-8352901 No way to add back lint categories after "none"
-
- Draft
-
- links to
-
Review(master) openjdk/jdk/24227