diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefMethodImpl.java b/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefMethodImpl.java index 38baa1940277..96b5e3268f8e 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefMethodImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefMethodImpl.java @@ -97,9 +97,7 @@ public class RefMethodImpl extends RefJavaElementImpl implements RefMethod { setAbstract(javaPsi.hasModifierProperty(PsiModifier.ABSTRACT)); setLibraryOverride(javaPsi.hasModifierProperty(PsiModifier.NATIVE)); - if (PsiModifier.PUBLIC.equals(getAccessModifier())) { - setAppMain(isAppMain(javaPsi, this)); - } + setAppMain(isAppMain(javaPsi, this)); if (!PsiModifier.PRIVATE.equals(getAccessModifier()) && !isStatic()) { initializeSuperMethods(javaPsi); } @@ -125,12 +123,11 @@ public class RefMethodImpl extends RefJavaElementImpl implements RefMethod { } private static boolean isAppMain(PsiMethod psiMethod, RefMethod refMethod) { + if (PsiMethodUtil.isMainMethod(psiMethod)) return true; + if (!refMethod.isStatic()) return false; if (!PsiTypes.voidType().equals(psiMethod.getReturnType())) return false; - PsiMethod appMainPattern = ((RefMethodImpl)refMethod).getRefJavaManager().getAppMainPattern(); - if (MethodSignatureUtil.areSignaturesEqual(psiMethod, appMainPattern)) return true; - if ("main".equals(psiMethod.getName()) && psiMethod.getParameterList().isEmpty() && psiMethod.getLanguage().isKindOf("kotlin")) return true; diff --git a/java/java-tests/testData/inspection/deadCode/unnamedClass/expected.xml b/java/java-tests/testData/inspection/deadCode/unnamedClass/expected.xml new file mode 100644 index 000000000000..4704d91e891d --- /dev/null +++ b/java/java-tests/testData/inspection/deadCode/unnamedClass/expected.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/java/java-tests/testData/inspection/deadCode/unnamedClass/src/Main.java b/java/java-tests/testData/inspection/deadCode/unnamedClass/src/Main.java new file mode 100644 index 000000000000..05a37e98348a --- /dev/null +++ b/java/java-tests/testData/inspection/deadCode/unnamedClass/src/Main.java @@ -0,0 +1 @@ +void main() {} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/UnusedDeclarationInspectionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/UnusedDeclarationInspectionTest.java index ea503be85b41..408c6621a5d7 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/UnusedDeclarationInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/UnusedDeclarationInspectionTest.java @@ -277,6 +277,12 @@ public class UnusedDeclarationInspectionTest extends AbstractUnusedDeclarationTe public void testJunitMethodSource() {doTest();} + public void testUnnamedClass() { + IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21_PREVIEW, () -> { + doTest(); + }); + } + private void doTest5() { IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_1_5, () -> doTest()); }