From fc7c77754ea38a8fd8ffdb60628b4d03583f5112 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 26 Mar 2026 17:16:48 +0100 Subject: [PATCH] IDEA-386847 [java]: add default modifier when making interface method non-static GitOrigin-RevId: fde665d19cdb6fef9cf81e81c93ac8ddcf05789f --- .../codeInsight/daemon/impl/quickfix/ModifierFix.java | 8 ++++++++ .../modifier/beforeMakeInterfaceMethodNonStatic.java | 8 ++++++++ .../modifier8/afterMakeInterfaceMethodNonStatic.java | 8 ++++++++ .../modifier8/beforeMakeInterfaceMethodNonStatic.java | 8 ++++++++ 4 files changed, 32 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier/beforeMakeInterfaceMethodNonStatic.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier8/afterMakeInterfaceMethodNonStatic.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier8/beforeMakeInterfaceMethodNonStatic.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java index d99d9b0a9327..49a8898b48e5 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java @@ -238,6 +238,14 @@ public class ModifierFix extends PsiBasedModCommandAction removeFinalModifierFromMethods(aClass); } } + else { + if (owner instanceof PsiMethod method && PsiModifier.STATIC.equals(myModifier)) { + PsiClass containingClass = method.getContainingClass(); + if (containingClass != null && containingClass.isInterface()) { + modifierList.setModifierProperty(PsiModifier.DEFAULT, true); + } + } + } changeModifierList(modifierList); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier/beforeMakeInterfaceMethodNonStatic.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier/beforeMakeInterfaceMethodNonStatic.java new file mode 100644 index 000000000000..a65e229ccbb1 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier/beforeMakeInterfaceMethodNonStatic.java @@ -0,0 +1,8 @@ +// "Make 'y())' not static" "false" +abstract interface Interface { + int f(); + + static void y() { + f(); // <- Error + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier8/afterMakeInterfaceMethodNonStatic.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier8/afterMakeInterfaceMethodNonStatic.java new file mode 100644 index 000000000000..2c0a9f9d7253 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier8/afterMakeInterfaceMethodNonStatic.java @@ -0,0 +1,8 @@ +// "Make 'y()' not static" "true" +abstract interface Interface { + int f(); + + default void y() { + f(); // <- Error + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier8/beforeMakeInterfaceMethodNonStatic.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier8/beforeMakeInterfaceMethodNonStatic.java new file mode 100644 index 000000000000..f86efa53a532 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/modifier8/beforeMakeInterfaceMethodNonStatic.java @@ -0,0 +1,8 @@ +// "Make 'y()' not static" "true" +abstract interface Interface { + int f(); + + static void y() { + f(); // <- Error + } +} \ No newline at end of file