add unnamed class feature and check for usage

GitOrigin-RevId: 51ab72778378fdf84d19cb801b10ef9fb1eb2929
This commit is contained in:
Roman Ivanov
2023-07-13 15:14:13 +02:00
committed by intellij-monorepo-bot
parent 857cd855ba
commit 4ef891cf5e
5 changed files with 47 additions and 5 deletions

View File

@@ -569,6 +569,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
@Override
public void visitClassInitializer(@NotNull PsiClassInitializer initializer) {
super.visitClassInitializer(initializer);
if (!myHolder.hasErrorResults()) add(checkUnnamedClassMember(initializer));
if (!myHolder.hasErrorResults()) add(HighlightClassUtil.checkIllegalInstanceMemberInRecord(initializer));
if (!myHolder.hasErrorResults()) add(HighlightControlFlowUtil.checkInitializerCompleteNormally(initializer));
if (!myHolder.hasErrorResults()) add(HighlightControlFlowUtil.checkUnreachableStatement(initializer.getBody()));
@@ -735,6 +736,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
@Override
public void visitField(@NotNull PsiField field) {
super.visitField(field);
if (!myHolder.hasErrorResults()) add(checkUnnamedClassMember(field));
if (!myHolder.hasErrorResults()) add(HighlightClassUtil.checkIllegalInstanceMemberInRecord(field));
if (!myHolder.hasErrorResults()) add(HighlightControlFlowUtil.checkFinalFieldInitialized(field));
}
@@ -993,6 +995,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
@Override
public void visitMethod(@NotNull PsiMethod method) {
super.visitMethod(method);
if (!myHolder.hasErrorResults()) add(checkUnnamedClassMember(method));
if (!myHolder.hasErrorResults()) add(HighlightControlFlowUtil.checkUnreachableStatement(method.getBody()));
if (!myHolder.hasErrorResults()) add(HighlightMethodUtil.checkConstructorHandleSuperClassExceptions(method));
if (!myHolder.hasErrorResults()) add(HighlightMethodUtil.checkRecursiveConstructorInvocation(method));
@@ -2201,10 +2204,11 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
}
}
@Override
public void visitUnnamedPattern(@NotNull PsiUnnamedPattern pattern) {
super.visitUnnamedPattern(pattern);
add(checkFeature(pattern, HighlightingFeature.UNNAMED_PATTERNS_AND_VARIABLES));
private HighlightInfo.Builder checkUnnamedClassMember(@NotNull PsiMember member) {
if (!(member.getContainingClass() instanceof PsiUnnamedClass)) {
return null;
}
return checkFeature(member, HighlightingFeature.UNNAMED_CLASSES);
}
private HighlightInfo.Builder checkFeature(@NotNull PsiElement element, @NotNull HighlightingFeature feature) {

View File

@@ -77,6 +77,7 @@ public enum HighlightingFeature {
return until == useSiteLevel;
}
@Override
boolean isLimited() {
return true;
@@ -84,7 +85,7 @@ public enum HighlightingFeature {
},
ENUM_QUALIFIED_NAME_IN_SWITCH(LanguageLevel.JDK_21, "feature.enum.qualified.name.in.switch"),
STRING_TEMPLATES(LanguageLevel.JDK_21_PREVIEW, "feature.string.templates"),
UNNAMED_PATTERNS_AND_VARIABLES(LanguageLevel.JDK_21_PREVIEW, "feature.unnamed.vars");
UNNAMED_CLASSES(LanguageLevel.JDK_21_PREVIEW, "feature.unnamed.classes");
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";