mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
convert to instance: resolve conflicting names (IDEA-144265)
This commit is contained in:
+12
-2
@@ -333,8 +333,8 @@ public class ConvertToInstanceMethodProcessor extends BaseRefactoringProcessor {
|
||||
final PsiReference reference = usage.getReferenceExpression();
|
||||
if (reference instanceof PsiReferenceExpression) {
|
||||
final PsiReferenceExpression referenceExpression = (PsiReferenceExpression)reference;
|
||||
if (referenceExpression.getParent() instanceof PsiReferenceExpression) {
|
||||
// todo: check for correctness
|
||||
PsiElement parent = referenceExpression.getParent();
|
||||
if (parent instanceof PsiReferenceExpression && sameUnqualified(parent)) {
|
||||
referenceExpression.delete();
|
||||
}
|
||||
else {
|
||||
@@ -350,6 +350,16 @@ public class ConvertToInstanceMethodProcessor extends BaseRefactoringProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean sameUnqualified(PsiElement parent) {
|
||||
PsiElement resolve = ((PsiReferenceExpression)parent).resolve();
|
||||
if (resolve instanceof PsiField) {
|
||||
final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(resolve.getProject());
|
||||
final PsiExpression unqualifiedFieldReference = elementFactory.createExpressionFromText(((PsiField)resolve).getName(), parent);
|
||||
return resolve == ((PsiReferenceExpression)unqualifiedFieldReference).resolve();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void processMethodCall(MethodCallUsageInfo usageInfo) throws IncorrectOperationException {
|
||||
PsiMethodCallExpression methodCall = usageInfo.getMethodCall();
|
||||
PsiParameterList parameterList = myMethod.getParameterList();
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
class Foo {
|
||||
|
||||
public String bar;
|
||||
private String baz;
|
||||
|
||||
public static void set<caret>Bar(Foo foo, String bar) {
|
||||
foo.bar = bar;
|
||||
foo.baz = bar;
|
||||
foo.bar();
|
||||
}
|
||||
|
||||
private void bar() {
|
||||
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
class Foo {
|
||||
|
||||
public String bar;
|
||||
private String baz;
|
||||
|
||||
public void setBar(String bar) {
|
||||
this.bar = bar;
|
||||
baz = bar;
|
||||
bar();
|
||||
}
|
||||
|
||||
private void bar() {
|
||||
|
||||
}
|
||||
}
|
||||
+5
@@ -35,6 +35,11 @@ public class ConvertToInstanceMethodTest extends LightRefactoringTestCase {
|
||||
public void testInterfaceTypeParameter() throws Exception { doTest(0); }
|
||||
|
||||
public void testJavadocParameter() throws Exception { doTest(0); }
|
||||
|
||||
public void testConflictingParameterName() throws Exception {
|
||||
doTest(0);
|
||||
}
|
||||
|
||||
public void testVisibilityConflict() throws Exception {
|
||||
try {
|
||||
doTest(0, PsiModifier.PRIVATE);
|
||||
|
||||
Reference in New Issue
Block a user