From 762fce13c9635605feed0e56ac70cfdb769b772b Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 17 Dec 2012 18:37:44 +0100 Subject: [PATCH] pull up: delete @Override annotation if it is inappropriate in new hierarchy (IDEA-97598) --- .../refactoring/memberPullUp/PullUpHelper.java | 2 +- .../refactoring/pullUp/PreserveOverride.java | 12 ++++++++++++ .../refactoring/pullUp/PreserveOverride_after.java | 13 +++++++++++++ .../com/intellij/refactoring/PullUpTest.java | 4 ++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/pullUp/PreserveOverride.java create mode 100644 java/java-tests/testData/refactoring/pullUp/PreserveOverride_after.java diff --git a/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpHelper.java b/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpHelper.java index 67de6c4c110a..fc67f715d19c 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpHelper.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpHelper.java @@ -219,7 +219,7 @@ public class PullUpHelper extends BaseRefactoringProcessor{ if (info.getMember() instanceof PsiMethod) { PsiMethod method = (PsiMethod)info.getMember(); PsiMethod methodCopy = (PsiMethod)method.copy(); - if (method.findDeepestSuperMethods().length == 0) { + if (method.findSuperMethods(myTargetSuperClass).length == 0) { deleteOverrideAnnotationIfFound(methodCopy); } final boolean isOriginalMethodAbstract = method.hasModifierProperty(PsiModifier.ABSTRACT) || method.hasModifierProperty(PsiModifier.DEFAULT); diff --git a/java/java-tests/testData/refactoring/pullUp/PreserveOverride.java b/java/java-tests/testData/refactoring/pullUp/PreserveOverride.java new file mode 100644 index 000000000000..84f2f18bad76 --- /dev/null +++ b/java/java-tests/testData/refactoring/pullUp/PreserveOverride.java @@ -0,0 +1,12 @@ +abstract class Bazz { + public abstract void foo(); +} + +abstract class Foo extends Bazz {} + +class Bar extends Foo { + @Override + public void foo() { + } +} + diff --git a/java/java-tests/testData/refactoring/pullUp/PreserveOverride_after.java b/java/java-tests/testData/refactoring/pullUp/PreserveOverride_after.java new file mode 100644 index 000000000000..ea553c109132 --- /dev/null +++ b/java/java-tests/testData/refactoring/pullUp/PreserveOverride_after.java @@ -0,0 +1,13 @@ +abstract class Bazz { + public abstract void foo(); +} + +abstract class Foo extends Bazz { + @Override + public void foo() { + } +} + +class Bar extends Foo { +} + diff --git a/java/java-tests/testSrc/com/intellij/refactoring/PullUpTest.java b/java/java-tests/testSrc/com/intellij/refactoring/PullUpTest.java index 686ee6254fcf..5335d4d68648 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/PullUpTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/PullUpTest.java @@ -138,6 +138,10 @@ public class PullUpTest extends LightRefactoringTestCase { doTest(false, new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class)); } + public void testPreserveOverride() { + doTest(false, new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class)); + } + private void doTest(RefactoringTestUtil.MemberDescriptor... membersToFind) { doTest(true, membersToFind); }