Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8350135

Support lint control of sunapi diagnostics

XMLWordPrintable

    • Icon: CSR CSR
    • Resolution: Withdrawn
    • Icon: P4 P4
    • None
    • tools
    • None
    • behavioral
    • low
    • Hide
      A project that currently emits this warning and is compiled with `Xlint:none` will no longer emit it verbosely. Instead, they will only see the "recompile" note. But any such project must not be using `-Werror` - so this change can only affect the warnings produced by any compilation, not whether or not it completes successfully.
      Show
      A project that currently emits this warning and is compiled with `Xlint:none` will no longer emit it verbosely. Instead, they will only see the "recompile" note. But any such project must not be using `-Werror` - so this change can only affect the warnings produced by any compilation, not whether or not it completes successfully.
    • add/remove/modify command line option
    • JDK

      Summary

      Add a new lint category proprietary that controls the mandatory warning "Foo is internal proprietary API and may be removed in a future release".

      Problem

      There is currently no way to suppress this warning. This puts awkward constraints on the build process of any affected project.

      For example, building with -Werror is not possible if the project uses e.g. sun.misc.Unsafe.

      Solution

      Put this warning under the control of the Lint mechanism, so it can be controlled via the -Xlint flag and @SuppressWarnings.

      Note that this warning is currently a mandatory warning, so we will preserve that behavior. However, the warning will be newly suppressible, so that means we will also do the normal mandatory warning aggregation logic, in which we emit a "recompile" note, refer to additional files as needed, etc.

      Specification

      The usual mandatory warning behavior will apply, for example:

      $ cat Proprietary.java 
      class Proprietary {
          sun.misc.Unsafe x;
      }
      $ javac -d classes Proprietary.java 
      Proprietary.java:2: warning: [proprietary] Unsafe is internal proprietary API and may be removed in a future release
          sun.misc.Unsafe x;
                  ^
      1 warning
      $ javac -d classes -Xlint:-proprietary Proprietary.java 
      Note: Proprietary.java uses an internal proprietary API that may be removed in a future release
      Note: Recompile with -Xlint:proprietary for details.
      $ javac -d classes -Xlint:-proprietary Proprietary.java Proprietary2.java
      Note: Some input files use an internal proprietary API that may be removed in a future release
      Note: Recompile with -Xlint:proprietary for details.

      The new lint category will be added to the --help-lint output:

      --- x0  2025-02-14 15:18:27.887776902 -0600
      +++ -   2025-02-14 15:18:40.186611000 -0600
      @@ -23,6 +23,7 @@
           overrides            Warn about issues regarding method overrides.
           path                 Warn about invalid path elements on the command line.
           processing           Warn about issues regarding annotation processing.
      +    proprietary          Warn about use of internal proprietary APIs.
           rawtypes             Warn about use of raw types.
           removal              Warn about use of API that has been marked for removal.
           requires-automatic   Warn about use of automatic modules in the requires clauses.

            acobbs Archie Cobbs
            cushon Liam Miller-Cushon
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: