SuppressWarnings on preview features
Alex Buckley
alex.buckley at oracle.com
Thu Jan 21 21:29:24 UTC 2021
Hi Nikita,
The text you quoted -- "Whether preview features are enabled or
disabled, ..." -- refers to use of a preview language feature. You're
using Class::isSealed, which is a preview API, not a preview language
feature. Use of preview APIs is discussed earlier in JEP 12, in the
section "Use of Preview Features":
> When compiling with preview features enabled, any source code
> reference to (i) a class or interface declared using a preview
> language feature, or (ii) a normal preview API, causes a preview
> warning. This warning is mandated by the JLS so it occurs on all Java
> compilers; it is not specific to javac. It can be suppressed with
> @SuppressWarnings("preview").
Alex
On 1/21/2021 11:52 AM, Nikita Eshkeev wrote:
> The JEP 12 https://openjdk.java.net/jeps/12
> <https://openjdk.java.net/jeps/12> states that:
> > /Whether preview features are enabled or disabled/, |javac| in JDK $N
> prints a message if it detects the use of a preview language feature of
> Java SE $N in source code. THIS MESSAGE CANNOT BE TURNED OFF BY USING
> |@SuppressWarnings| in source code, because developers must be
> unfailingly aware of their reliance on the Java SE $N version of a
> preview language feature;
> But consider the following code :
> // @SuppressWarnings("preview")
> class Main {
> {
> String.class.isSealed();
> }
> }
> The Class#isSealed method is annotated (here is the link
> https://github.com/openjdk/jdk/blob/jdk-15%2B36/src/java.base/share/classes/java/lang/Class.java#L4446
> <https://github.com/openjdk/jdk/blob/jdk-15%2B36/src/java.base/share/classes/java/lang/Class.java#L4446>)
> with @PreviewFeature(feature=PreviewFeature.Feature.SEALED_CLASSES ...
> and SEALED_CLASSES is a preview feature in JDK15.
> When I compile the code with OpenJDK 15 I get the following output:
>
> Main.java:4: warning: [preview] isSealed() is an API that is part of a
> preview feature
> Main.class.isSealed();
> ^
> 1 warning
> When I comment out the SuppressWarnings annotation and compile the code
> again, there is no warnings in the output. Is this a bug?
> Sincerely,
> Nikita Eshkeev
More information about the compiler-dev
mailing list