mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
rename: context class should be chosen when qualify conflict ref (IDEA-83928)
This commit is contained in:
@@ -87,9 +87,14 @@ public abstract class RenameJavaMemberProcessor extends RenamePsiElementProcesso
|
||||
ref = (PsiReferenceExpression)factory.createExpressionFromText("this." + name, context);
|
||||
return ref;
|
||||
}
|
||||
|
||||
while (contextClass != null && !InheritanceUtil.isInheritorOrSelf(contextClass, containingClass, true)) {
|
||||
contextClass = PsiTreeUtil.getParentOfType(contextClass, PsiClass.class, true);
|
||||
}
|
||||
|
||||
ref = (PsiReferenceExpression) factory.createExpressionFromText("A.this." + name, null);
|
||||
qualifier = ((PsiThisExpression)ref.getQualifierExpression()).getQualifier();
|
||||
final PsiJavaCodeReferenceElement classReference = factory.createClassReferenceElement(containingClass);
|
||||
final PsiJavaCodeReferenceElement classReference = factory.createClassReferenceElement(contextClass != null ? contextClass : containingClass);
|
||||
qualifier.replace(classReference);
|
||||
}
|
||||
return ref;
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
class A {
|
||||
boolean _g<caret>g;
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
class FF {
|
||||
public void setGG(boolean gg) {
|
||||
_gg = gg;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
class A {
|
||||
boolean gg;
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
class FF {
|
||||
public void setGG(boolean gg) {
|
||||
B.this.gg = gg;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -184,6 +184,10 @@ public class RenameCollisionsTest extends LightRefactoringTestCase {
|
||||
public void testRenameStaticMethodTypeParameter() throws Exception {
|
||||
doTest("E");
|
||||
}
|
||||
|
||||
public void testRenameFieldInSuper() throws Exception {
|
||||
doTest("gg");
|
||||
}
|
||||
|
||||
private void doTest(final String newName) throws Exception {
|
||||
configureByFile(BASE_PATH + getTestName(false) + ".java");
|
||||
|
||||
Reference in New Issue
Block a user