[java-highlighting] IJ-CR-165049 IDEA-374019 Don't show error about 'main' method if there is an error with braces

- highlight for java 21 duplicated classes

GitOrigin-RevId: 31a935297e6b2dcb843cfd5ce1d10acb78774df1
This commit is contained in:
Mikhail Pyltsin
2025-06-10 20:57:11 +02:00
committed by intellij-monorepo-bot
parent d632b79c67
commit e842105580
5 changed files with 17 additions and 3 deletions

View File

@@ -197,9 +197,10 @@ final class ClassChecker {
}
parent = element;
if (element instanceof PsiDeclarationStatement){ element = PsiTreeUtil.getChildOfType(element, PsiClass.class);}
if (element instanceof PsiDeclarationStatement) element = PsiTreeUtil.getChildOfType(element, PsiClass.class);
if (element instanceof PsiImplicitClass) return;
if (myVisitor.isApplicable(JavaFeature.IMPLICIT_CLASS_NAME_OUT_OF_SCOPE) &&
element instanceof PsiImplicitClass) return;
if (element instanceof PsiClass psiClass && name.equals(psiClass.getName())) {
myVisitor.report(JavaErrorKinds.CLASS_DUPLICATE.create(aClass, psiClass));

View File

@@ -63,6 +63,7 @@ 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.implicit.classes=Implicitly declared classes
feature.implicit.class.name.out.of.scope=Names of implicitly declared classes are out of scopes
feature.instance.main.method=Instance main method
feature.inherited.static.main.method=Inherited static main method
feature.scoped.values=Scoped Values

View File

@@ -7,7 +7,6 @@ import org.jetbrains.annotations.Contract
import org.jetbrains.annotations.Nls
import org.jetbrains.annotations.NonNls
import org.jetbrains.annotations.PropertyKey
import kotlin.jvm.JvmStatic
/**
* Represents Java language, JVM, or standard library features and provides information
@@ -100,6 +99,8 @@ enum class JavaFeature {
SCOPED_VALUES(LanguageLevel.JDK_21_PREVIEW, "feature.scoped.values"),
STRUCTURED_CONCURRENCY(LanguageLevel.JDK_21_PREVIEW, "feature.structured.concurrency"),
IMPLICIT_CLASS_NAME_OUT_OF_SCOPE(LanguageLevel.JDK_22_PREVIEW, "feature.implicit.class.name.out.of.scope"),
CLASSFILE_API(LanguageLevel.JDK_22_PREVIEW, "feature.classfile.api"),
STREAM_GATHERERS(LanguageLevel.JDK_22_PREVIEW, "feature.stream.gatherers"),
STATEMENTS_BEFORE_SUPER(LanguageLevel.JDK_22_PREVIEW, "feature.statements.before.super"),

View File

@@ -0,0 +1,5 @@
<error descr="Implicitly declared class contains no 'main' method">public class <error descr="Duplicate class: 'SameNameInnerClass21'">SameNameInnerClass21</error> {
}
int a = 1;</error>

View File

@@ -184,6 +184,12 @@ class ImplicitClassHighlightingTest : LightJavaCodeInsightFixtureTestCase() {
doTest()
}
fun testSameNameInnerClass21() {
IdeaTestUtil.withLevel(module, LanguageLevel.JDK_21_PREVIEW, Runnable {
doTest()
})
}
private fun doTest() {
myFixture.configureByFile(getTestName(false) + ".java")
myFixture.checkHighlighting()