mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
rename: search for conflicts with super classes of container (IDEA-162372)
This commit is contained in:
@@ -28,10 +28,7 @@ import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.search.searches.ClassInheritorsSearch;
|
||||
import com.intellij.psi.search.searches.MethodReferencesSearch;
|
||||
import com.intellij.psi.search.searches.OverridingMethodsSearch;
|
||||
import com.intellij.psi.util.MethodSignature;
|
||||
import com.intellij.psi.util.MethodSignatureUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.refactoring.HelpID;
|
||||
import com.intellij.refactoring.JavaRefactoringSettings;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
@@ -158,7 +155,8 @@ public class RenameJavaMethodProcessor extends RenameJavaMemberProcessor {
|
||||
if (!methodAndOverriders.contains(actualMethod)) {
|
||||
PsiClass outerClass = PsiTreeUtil.getParentOfType(element, PsiClass.class);
|
||||
while (outerClass != null) {
|
||||
if (containingClasses.contains(outerClass)) {
|
||||
PsiClass finalOuterClass = outerClass;
|
||||
if (containingClasses.stream().anyMatch(psiClass -> InheritanceUtil.isInheritorOrSelf(finalOuterClass, psiClass, true))) {
|
||||
qualifyMember(element, newName, outerClass, isStatic);
|
||||
break;
|
||||
}
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
|
||||
interface ITest {
|
||||
void act<caret>ion(Object o);
|
||||
}
|
||||
|
||||
|
||||
class Test implements ITest{
|
||||
|
||||
public void action(Object o) {
|
||||
}
|
||||
|
||||
private class ActionHandler {
|
||||
public void handleAction(Object o, Object o1) {
|
||||
action(o);
|
||||
}
|
||||
}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
|
||||
interface ITest {
|
||||
void handleAction(Object o);
|
||||
}
|
||||
|
||||
|
||||
class Test implements ITest{
|
||||
|
||||
public void handleAction(Object o) {
|
||||
}
|
||||
|
||||
private class ActionHandler {
|
||||
public void handleAction(Object o, Object o1) {
|
||||
Test.this.handleAction(o);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -242,6 +242,10 @@ public class RenameCollisionsTest extends LightRefactoringTestCase {
|
||||
doTest("T");
|
||||
}
|
||||
|
||||
public void testInnerClassNameCollisionWithSuperClassOfContainer() throws Exception {
|
||||
doTest("handleAction");
|
||||
}
|
||||
|
||||
private void doTestImpossibleToRename() throws Exception {
|
||||
configureByFile(BASE_PATH + getTestName(false) + ".java");
|
||||
PsiElement element = TargetElementUtil
|
||||
|
||||
Reference in New Issue
Block a user