Files
openide/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/previewfeature/java.base/jdk.internal.javac/PreviewFeature.java
Nikita Eshkeev 735d4f05c1 [preview] IDEA-259969 Reflective preview APIs are incorrectly reported as errors
This patch adds the PreviewFeatureInspection inspection that is enabled only when the language level of the project is a preview one. It allows to register warnings and suppress all the preview warnings as it's done in javac. When the language level of the project is not a preview one, HighlightVisitorImpl runs the same visitor that can report errors instead of warnings. It cannot be suppressed.

A PSI element is considered a preview feature when either:
- it is annotated with PreviewFeature directly
- one of its enclosing classes is annotated with PreviewFeature
- its module is annotated with PreviewFeature
It's worth mentioning that when a package in package-info.java is annotated with PreviewFeature this flag doesn't get to be propagated to the classes that are inside the package.

Signed-off-by: Nikita Eshkeev <nikita.eshkeev@jetbrains.com>

GitOrigin-RevId: 5bd22ea2e18ba83303156a2b9665bc54622f6344
2021-02-11 00:50:54 +00:00

24 lines
434 B
Java

package jdk.internal.javac;
import java.lang.annotation.*;
@Target({ElementType.METHOD,
ElementType.CONSTRUCTOR,
ElementType.FIELD,
ElementType.PACKAGE,
ElementType.MODULE,
ElementType.TYPE})
@Retention(RetentionPolicy.CLASS)
public @interface PreviewFeature {
public Feature feature();
public boolean reflective() default false;
public enum Feature {
TEXT_BLOCKS,
RECORDS,
SEALED_CLASSES,
;
}
}