pull up: delete @Override annotation if it is inappropriate in new hierarchy (IDEA-97598)

This commit is contained in:
anna
2012-12-17 19:06:13 +01:00
parent b83ff68bc0
commit 762fce13c9
4 changed files with 30 additions and 1 deletions
@@ -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);
@@ -0,0 +1,12 @@
abstract class Bazz {
public abstract void foo();
}
abstract class Foo extends Bazz {}
class Bar extends Foo {
@Override
public void f<caret>oo() {
}
}
@@ -0,0 +1,13 @@
abstract class Bazz {
public abstract void foo();
}
abstract class Foo extends Bazz {
@Override
public void foo() {
}
}
class Bar extends Foo {
}
@@ -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);
}