From 842637f9d76970f48fd3d303c06f89a49fca080f Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 6 Oct 2020 12:57:10 +0200 Subject: [PATCH] java safe delete: don't suggest to delete generated members (IDEA-252043) GitOrigin-RevId: 8d9647fe88938d87bcb3d9ddb7c698864c9a22da --- .../safeDelete/SafeDeleteJavaCalleeChooser.java | 1 + .../safeDelete/DeleteMethodKeepEnumValues.java | 9 +++++++++ .../safeDelete/DeleteMethodKeepEnumValues_after.java | 4 ++++ .../com/intellij/java/refactoring/SafeDeleteTest.java | 4 ++++ 4 files changed, 18 insertions(+) create mode 100644 java/java-tests/testData/refactoring/safeDelete/DeleteMethodKeepEnumValues.java create mode 100644 java/java-tests/testData/refactoring/safeDelete/DeleteMethodKeepEnumValues_after.java diff --git a/java/java-impl/src/com/intellij/refactoring/safeDelete/SafeDeleteJavaCalleeChooser.java b/java/java-impl/src/com/intellij/refactoring/safeDelete/SafeDeleteJavaCalleeChooser.java index f36d16ef14b2..cc4b652617c2 100644 --- a/java/java-impl/src/com/intellij/refactoring/safeDelete/SafeDeleteJavaCalleeChooser.java +++ b/java/java-impl/src/com/intellij/refactoring/safeDelete/SafeDeleteJavaCalleeChooser.java @@ -118,6 +118,7 @@ abstract class SafeDeleteJavaCalleeChooser extends CallerChooserBase .stream() .filter(m -> !(m instanceof PsiMember) || containingClass.equals(((PsiMember)m).getContainingClass()) && !psiMember.equals(m)) .filter(m -> !(m instanceof PsiMethod) || ((PsiMethod)m).findDeepestSuperMethods().length == 0) + .filter(m -> m.isPhysical()) .filter(m -> usedOnlyIn(m, psiMember)) .collect(Collectors.toList()); } diff --git a/java/java-tests/testData/refactoring/safeDelete/DeleteMethodKeepEnumValues.java b/java/java-tests/testData/refactoring/safeDelete/DeleteMethodKeepEnumValues.java new file mode 100644 index 000000000000..69a3b163c3cd --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/DeleteMethodKeepEnumValues.java @@ -0,0 +1,9 @@ +enum Test { + A, B; + void foo() { + for (Test v : values()) { + System.out.println(v); + } + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/safeDelete/DeleteMethodKeepEnumValues_after.java b/java/java-tests/testData/refactoring/safeDelete/DeleteMethodKeepEnumValues_after.java new file mode 100644 index 000000000000..569060bbd31d --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/DeleteMethodKeepEnumValues_after.java @@ -0,0 +1,4 @@ +enum Test { + A, B; + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/SafeDeleteTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/SafeDeleteTest.java index cf07f97de28d..49fc901e3d04 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/SafeDeleteTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/SafeDeleteTest.java @@ -107,6 +107,10 @@ public class SafeDeleteTest extends MultiFileTestCase { doSingleFileTest(); } + public void testDeleteMethodKeepEnumValues() throws Exception { + doSingleFileTest(); + } + public void testDeleteMethodCascadeRecursive() throws Exception { doSingleFileTest(); }