From 5fa62ff23e82b12b7130c1e9062968b06d43cc95 Mon Sep 17 00:00:00 2001 From: Mikhail Pyltsin Date: Fri, 27 Jun 2025 14:51:35 +0200 Subject: [PATCH] [java] IDEA-374935 Wrong gutter for static inherited main method (cherry picked from commit 1772d147ecd72520f81c1a9a567844a5779728cc) (cherry picked from commit e7b73610078623fabd153da669e974f295b96420) IJ-MR-169535 GitOrigin-RevId: 7887998c7f50daea5769198bef236f160a3a530a --- .../src/com/intellij/psi/util/PsiMethodUtil.java | 3 +-- .../navigation/RunLineMarkerJava22Test.java | 2 +- .../navigation/RunLineMarkerTest.java | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiMethodUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiMethodUtil.java index 5fe12423b9b5..8e28dcd88398 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiMethodUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiMethodUtil.java @@ -112,8 +112,7 @@ public final class PsiMethodUtil { continue; } if (containingClass.isInterface() && - mainMethod.hasModifierProperty(PsiModifier.STATIC) && - !chooseMainMethodByParametersEnabled) { + mainMethod.hasModifierProperty(PsiModifier.STATIC)) { continue; } } diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerJava22Test.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerJava22Test.java index 0b613a583e4a..9cd366033d3f 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerJava22Test.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerJava22Test.java @@ -178,7 +178,7 @@ public class RunLineMarkerJava22Test extends LightJavaCodeInsightFixtureTestCase class A implements B {} """); List marks = myFixture.findAllGutters(); - assertEquals(1, marks.size()); + assertEquals(0, marks.size()); }); } diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerTest.java index 3687e3283b31..2d3c4969e6d3 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerTest.java @@ -63,7 +63,6 @@ public class RunLineMarkerTest extends LineMarkerTestCase { assertEquals(ThreeState.YES, RunLineMarkerProvider.hadAnythingRunnable(myFixture.getFile().getVirtualFile())); } - //todo fix for IDEA-374935 public void testRunLineMarkerOnInterface() { IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_24, () -> { myFixture.configureByText("Main.java", """ @@ -79,6 +78,21 @@ public class RunLineMarkerTest extends LineMarkerTestCase { }); } + public void testRunLineMarkerOnInterface25() { + IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_25, () -> { + myFixture.configureByText("Main.java", """ + public class Main implements I {} + interface I { public static void main(String[] args) {} + } + """); + assertEquals(ThreeState.UNSURE, RunLineMarkerProvider.hadAnythingRunnable(myFixture.getFile().getVirtualFile())); + assertEquals(0, myFixture.findGuttersAtCaret().size()); + List gutters = myFixture.findAllGutters(); + assertEquals(2, gutters.size()); + assertEquals(ThreeState.YES, RunLineMarkerProvider.hadAnythingRunnable(myFixture.getFile().getVirtualFile())); + }); + } + public void testNoRunLineMarkerAnonymous() { myFixture.configureByText("X.java", """ public class X {