rename: don't change qualifier on rename with collisions

This commit is contained in:
Anna.Kozlova
2018-07-11 09:20:20 +02:00
parent 5e3e81045f
commit 0bbf8ea90e
4 changed files with 42 additions and 1 deletions
@@ -131,7 +131,7 @@ public class RenameJavaMethodProcessor extends RenameJavaMemberProcessor {
private static void fixNameCollisionsWithInnerClassMethod(final PsiElement element, final String newName,
final Set<PsiMethod> methodAndOverriders, final Set<PsiClass> containingClasses,
final boolean isStatic) throws IncorrectOperationException {
if (!(element instanceof PsiReferenceExpression)) return;
if (!(element instanceof PsiReferenceExpression) || ((PsiReferenceExpression)element).getQualifierExpression() != null) return;
PsiElement elem = ((PsiReferenceExpression)element).resolve();
if (elem instanceof PsiMethod) {
@@ -0,0 +1,19 @@
interface A {
default void <caret>m() {}
default void f() {
m();
}
}
class Client1 implements A {
Client2 a;
@Override
public void m() {
a.m();
}
}
class Client2 implements A {
@Override
public void f() { }
}
@@ -0,0 +1,19 @@
interface A {
default void f() {}
default void f() {
f();
}
}
class Client1 implements A {
Client2 a;
@Override
public void f() {
a.f();
}
}
class Client2 implements A {
@Override
public void f() { }
}
@@ -162,6 +162,9 @@ public class RenameCollisionsTest extends LightRefactoringTestCase {
public void testRenameVarParamToOuterConst() {
doTest("STATIC_FIELD");
}
public void testRenameConflictNoQualification() {
BaseRefactoringProcessor.ConflictsInTestsException.withIgnoredConflicts(() -> doTest("f"));
}
public void testRenameLocalVariableHidesFieldInAnonymous() {
try {