move instance member (IDEA-78519)

This commit is contained in:
anna
2011-12-15 16:00:06 +01:00
parent bd2eb09f90
commit f9af2b2245
4 changed files with 39 additions and 2 deletions

View File

@@ -248,7 +248,7 @@ public class MoveInstanceMethodProcessor extends BaseRefactoringProcessor{
if (!methodExpression.isReferenceTo(myMethod)) return; if (!methodExpression.isReferenceTo(myMethod)) return;
final PsiExpression oldQualifier = methodExpression.getQualifierExpression(); final PsiExpression oldQualifier = methodExpression.getQualifierExpression();
PsiExpression newQualifier = null; PsiExpression newQualifier = null;
final PsiClass classReferencedByThis = MoveInstanceMembersUtil.getClassReferencedByThis(methodExpression);
if (myTargetVariable instanceof PsiParameter) { if (myTargetVariable instanceof PsiParameter) {
final int index = myMethod.getParameterList().getParameterIndex((PsiParameter)myTargetVariable); final int index = myMethod.getParameterList().getParameterIndex((PsiParameter)myTargetVariable);
final PsiExpression[] arguments = expression.getArgumentList().getExpressions(); final PsiExpression[] arguments = expression.getArgumentList().getExpressions();
@@ -264,7 +264,6 @@ public class MoveInstanceMethodProcessor extends BaseRefactoringProcessor{
PsiExpression newArgument = null; PsiExpression newArgument = null;
final PsiClass classReferencedByThis = MoveInstanceMembersUtil.getClassReferencedByThis(methodExpression);
if (classReferencedByThis != null) { if (classReferencedByThis != null) {
@NonNls String thisArgumentText = null; @NonNls String thisArgumentText = null;
if (manager.areElementsEquivalent(myMethod.getContainingClass(), classReferencedByThis)) { if (manager.areElementsEquivalent(myMethod.getContainingClass(), classReferencedByThis)) {

View File

@@ -0,0 +1,18 @@
public class A {
public void m<caret>(B b){
System.out.println(this);
}
public void show(B b){
m(b);
}
public void m (C c){
System.out.println(this);
}
}
class B{}
class C{}

View File

@@ -0,0 +1,18 @@
public class A {
public void show(B b){
b.m(this);
}
public void m (C c){
System.out.println(this);
}
}
class B{
public void m(A a){
System.out.println(a);
}
}
class C{}

View File

@@ -51,6 +51,8 @@ public class MoveInstanceMethodTest extends LightRefactoringTestCase {
public void testThisInAnonymous() throws Exception { doTest(true, 0); } public void testThisInAnonymous() throws Exception { doTest(true, 0); }
public void testOverloadingMethods() throws Exception { doTest(true, 0); }
public void testEscalateVisibility() throws Exception { public void testEscalateVisibility() throws Exception {
doTest(true, 0, VisibilityUtil.ESCALATE_VISIBILITY); doTest(true, 0, VisibilityUtil.ESCALATE_VISIBILITY);
} }