safe delete: process sibling methods (IDEA-111337)

This commit is contained in:
Anna Kozlova
2018-06-26 14:17:53 +03:00
parent 9e632c7b1c
commit 01211f6b08
4 changed files with 38 additions and 0 deletions
@@ -31,6 +31,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.VariableKind;
import com.intellij.psi.impl.FindSuperElementsHelper;
import com.intellij.psi.javadoc.PsiDocTag;
import com.intellij.psi.search.LocalSearchScope;
import com.intellij.psi.search.searches.FunctionalExpressionSearch;
@@ -149,6 +150,7 @@ public class JavaSafeDeleteProcessor extends SafeDeleteProcessorDelegateBase {
if (superMethods.isEmpty()) {
superMethods.add(method);
}
ContainerUtil.addAllNotNull(superMethods, FindSuperElementsHelper.getSiblingInheritedViaSubClass(method));
for (PsiMethod superMethod : superMethods) {
parametersToDelete.add(superMethod.getParameterList().getParameters()[parameterIndex]);
OverridingMethodsSearch.search(superMethod).forEach(overrider -> {
@@ -0,0 +1,16 @@
interface Z {
void foo(int a);
}
class A {
public void foo(int <caret>a) {
}
}
class B extends A implements Z {
@Override
public void foo(int a) {
}
}
@@ -0,0 +1,16 @@
interface Z {
void foo();
}
class A {
public void foo() {
}
}
class B extends A implements Z {
@Override
public void foo() {
}
}
@@ -98,6 +98,10 @@ public class SafeDeleteTest extends MultiFileTestCase {
doSingleFileTest();
}
public void testDeleteParameterOfASiblingMethod() throws Exception {
doSingleFileTest();
}
public void testDeleteMethodCascade() throws Exception {
doSingleFileTest();
}