[java-inspections] PreviewFeatureInspection: add features from Java 20-22

Fixes IDEA-340983 Preview API (structured concurrency) usage in Java 21 is not highlighted

GitOrigin-RevId: cd02d5e1fe328104a47ac1fd684b2e2324b6558d
This commit is contained in:
Tagir Valeev
2023-12-14 14:43:02 +01:00
committed by intellij-monorepo-bot
parent 5b363f94d2
commit f7074186ea
2 changed files with 43 additions and 3 deletions

View File

@@ -77,10 +77,30 @@ public enum HighlightingFeature {
RECORD_PATTERNS_IN_FOR_EACH(LanguageLevel.JDK_20_PREVIEW, "feature.record.patterns.in.for.each"){
@Override
boolean isSufficient(@NotNull LanguageLevel useSiteLevel) {
LanguageLevel until = LanguageLevel.JDK_20_PREVIEW;
return until == useSiteLevel;
return LanguageLevel.JDK_20_PREVIEW == useSiteLevel.getSupportedLevel();
}
@Override
boolean isLimited() {
return true;
}
},
VIRTUAL_THREADS(LanguageLevel.JDK_20_PREVIEW, "feature.virtual.threads") {
@Override
boolean isSufficient(@NotNull LanguageLevel useSiteLevel) {
return LanguageLevel.JDK_20_PREVIEW == useSiteLevel.getSupportedLevel();
}
@Override
boolean isLimited() {
return true;
}
},
FOREIGN_FUNCTIONS(LanguageLevel.JDK_20_PREVIEW, "feature.foreign.functions") {
@Override
boolean isSufficient(@NotNull LanguageLevel useSiteLevel) {
return LanguageLevel.JDK_20_PREVIEW == useSiteLevel.getSupportedLevel();
}
@Override
boolean isLimited() {
@@ -95,7 +115,12 @@ public enum HighlightingFeature {
return super.isSufficient(useSiteLevel) || LanguageLevel.JDK_21_PREVIEW == useSiteLevel;
}
},
IMPLICIT_CLASSES(LanguageLevel.JDK_21_PREVIEW, "feature.implicit.classes");
IMPLICIT_CLASSES(LanguageLevel.JDK_21_PREVIEW, "feature.implicit.classes"),
SCOPED_VALUES(LanguageLevel.JDK_21_PREVIEW, "feature.scoped.values"),
STRUCTURED_CONCURRENCY(LanguageLevel.JDK_21_PREVIEW, "feature.structured.concurrency"),
CLASSFILE_API(LanguageLevel.JDK_22_PREVIEW, "feature.classfile.api"),
STREAM_GATHERERS(LanguageLevel.JDK_22_PREVIEW, "feature.stream.gatherers"),
;
public static final @NonNls String JDK_INTERNAL_PREVIEW_FEATURE = "jdk.internal.PreviewFeature";
public static final @NonNls String JDK_INTERNAL_JAVAC_PREVIEW_FEATURE = "jdk.internal.javac.PreviewFeature";
@@ -158,6 +183,7 @@ public enum HighlightingFeature {
return convertFromPreviewFeatureName(enumConstant.getName());
}
// Should correspond to jdk.internal.javac.PreviewFeature.Feature enum
@Nullable
@Contract(pure = true)
private static HighlightingFeature convertFromPreviewFeatureName(@NotNull @NonNls String feature) {
@@ -166,6 +192,14 @@ public enum HighlightingFeature {
case "TEXT_BLOCKS" -> TEXT_BLOCKS;
case "RECORDS" -> RECORDS;
case "SEALED_CLASSES" -> SEALED_CLASSES;
case "STRING_TEMPLATES" -> STRING_TEMPLATES;
case "UNNAMED_CLASSES", "IMPLICIT_CLASSES" -> IMPLICIT_CLASSES;
case "SCOPED_VALUES" -> SCOPED_VALUES;
case "STRUCTURED_CONCURRENCY" -> STRUCTURED_CONCURRENCY;
case "CLASSFILE_API" -> CLASSFILE_API;
case "STREAM_GATHERERS" -> STREAM_GATHERERS;
case "FOREIGN" -> FOREIGN_FUNCTIONS;
case "VIRTUAL_THREADS" -> VIRTUAL_THREADS;
default -> null;
};
}