RFR: 8349847: Support configuring individual lint categories as errors [v8]

Vicente Romero vromero at openjdk.org
Wed Aug 13 21:27:18 UTC 2025


On Thu, 31 Jul 2025 14:24:35 GMT, Archie Cobbs <acobbs at openjdk.org> wrote:

>> This PR enhances the `-Werror` flag to support lint categories just like `-Xlint` does. For example `-Werror:all,-preview` would cause an error if any warning not in the `preview` lint category occurred.
>> 
>> The existing `-Xlint` flag has a particular behavior when conflicting flags are combined (e.g., `-Xlint:all -Xlint:none -Xlint:foo -Xlint:-foo` is equivalent to `-Xlint:all`). This behavior has been factored out and Javadocumented so that both `-Xlint` and `-Werror` can have this same "parsing" logic.
>> 
>> See the CSR [JDK-8350044](https://bugs.openjdk.org/browse/JDK-8350044) for details on how the new flag behaves in certain corner cases.
>
> Archie Cobbs has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 14 commits:
> 
>  - Merge branch 'master' into JDK-8349847 to fix cross-compiling build problem.
>  - Merge branch 'master' into JDK-8349847 to fix conflicts.
>  - Merge branch 'master' into JDK-8349847 to fix conflicts.
>  - Merge branch 'JDK-8359596' into JDK-8349847 to add "-Xlint:none" fix.
>  - Ensure that "-Xlint:none" still works for the affected warnings.
>    
>    The extra checks for "-Xlint:none" are needed now because of JDK-8352612,
>    which changed the behavior of "-Xlint:none" to no longer imply "-nowarn",
>    which allowed the affected warnings to get away with skipping that check.
>  - Minor naming and Javadoc tweaks.
>  - Merge branch 'JDK-8359596' into JDK-8349847
>  - No need for /nodynamiccopyright/ with this test.
>  - Restore behavior when both -Xlint:options and -Xlint:-options are given.
>  - Merge branch 'master' into JDK-8349847
>  - ... and 4 more: https://git.openjdk.org/jdk/compare/5f357fa2...2bdc2ab0

src/jdk.compiler/share/classes/com/sun/tools/javac/util/Options.java line 176:

> 174:     /**
> 175:      * Determine if a specific {@link LintCategory} is enabled via a custom
> 176:      * option flag of the form {@code -Flag}, {@code -Flag:all}, or {@code -Flag:key}.

nit: `Flag` seems to imply that any flag is acceptable when only two are

src/jdk.compiler/share/classes/com/sun/tools/javac/util/Options.java line 248:

> 246:      *
> 247:      * <p>
> 248:      * The set of categories is calculated as folllows. First, an initial set is created:

typo: `folllows`

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/23622#discussion_r2274650854
PR Review Comment: https://git.openjdk.org/jdk/pull/23622#discussion_r2274657381


More information about the compiler-dev mailing list