mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
add unnamed class feature and check for usage
GitOrigin-RevId: 51ab72778378fdf84d19cb801b10ef9fb1eb2929
This commit is contained in:
committed by
intellij-monorepo-bot
parent
857cd855ba
commit
4ef891cf5e
@@ -136,6 +136,7 @@ feature.record.patterns.in.for.each=Record patterns in for-each loops
|
||||
feature.enum.qualified.name.in.switch=Qualified enum as a constant in switch
|
||||
feature.string.templates=String templates
|
||||
feature.unnamed.vars=Unnamed patterns and variables
|
||||
feature.unnamed.classes=Unnamed classes
|
||||
|
||||
find.searching.for.references.to.class.progress=Searching for references to class {0}...
|
||||
find.usages.panel.title.derived.classes.cap=Derived classes
|
||||
|
||||
+8
-4
@@ -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) {
|
||||
|
||||
+2
-1
@@ -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";
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<error descr="Unnamed classes are not supported at language level '20'">void foo() {
|
||||
|
||||
}</error>
|
||||
|
||||
<error descr="Unnamed classes are not supported at language level '20'">String s = "asd";</error>
|
||||
|
||||
<error descr="Unnamed classes are not supported at language level '20'">static {
|
||||
|
||||
}</error>
|
||||
|
||||
class A {
|
||||
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.java.codeInsight.daemon
|
||||
|
||||
import com.intellij.JavaTestUtil
|
||||
import com.intellij.pom.java.LanguageLevel
|
||||
import com.intellij.testFramework.IdeaTestUtil
|
||||
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
|
||||
|
||||
class UnnamedClassHighlightingTest : LightJavaCodeInsightFixtureTestCase() {
|
||||
override fun getProjectDescriptor() = JAVA_21
|
||||
override fun getBasePath() = JavaTestUtil.getRelativeJavaTestDataPath() + "/codeInsight/daemonCodeAnalyzer/unnamedClass"
|
||||
|
||||
fun testHighlightInsufficientLevel() {
|
||||
IdeaTestUtil.withLevel(module, LanguageLevel.JDK_20, Runnable {
|
||||
doTest()
|
||||
})
|
||||
}
|
||||
|
||||
private fun doTest() {
|
||||
myFixture.configureByFile(getTestName(false) + ".java")
|
||||
myFixture.checkHighlighting()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user