correct field's class instance when move instance method (IDEA-82103)

This commit is contained in:
anna
2012-03-01 20:22:02 +01:00
parent a6244c8472
commit 5fa5c0f598
4 changed files with 35 additions and 1 deletions
@@ -259,7 +259,14 @@ public class MoveInstanceMethodProcessor extends BaseRefactoringProcessor{
}
else {
VisibilityUtil.escalateVisibility((PsiField)myTargetVariable, expression);
newQualifier = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory().createExpressionFromText(myTargetVariable.getName(), null);
String newQualifierName = myTargetVariable.getName();
if (myTargetVariable instanceof PsiField) {
final PsiClass aClass = PsiUtil.resolveClassInClassTypeOnly(oldQualifier.getType());
if (aClass == ((PsiField)myTargetVariable).getContainingClass()) {
newQualifierName = oldQualifier.getText() + "." + newQualifierName;
}
}
newQualifier = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory().createExpressionFromText(newQualifierName, null);
}
PsiExpression newArgument = null;
@@ -0,0 +1,13 @@
class Flim {
Flam flam = new Flam();
void be<caret>ep() {}
public static void main(String[] args) {
Flim flim = new Flim();
flim.beep();
}
}
class Flam {
}
@@ -0,0 +1,12 @@
class Flim {
Flam flam = new Flam();
public static void main(String[] args) {
Flim flim = new Flim();
flim.flam.beep();
}
}
class Flam {
void beep() {}
}
@@ -33,6 +33,8 @@ public class MoveInstanceMethodTest extends LightRefactoringTestCase {
public void testQualifyThisHierarchy() throws Exception {doTest(true, 0);}
public void testQualifyField() throws Exception {doTest(false, 0);}
public void testAnonymousHierarchy() throws Exception {doTest(true, 0);}
public void testTwoParams() throws Exception { doTest(true, 0); }