mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
correct field's class instance when move instance method (IDEA-82103)
This commit is contained in:
+8
-1
@@ -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() {}
|
||||
}
|
||||
+2
@@ -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); }
|
||||
|
||||
Reference in New Issue
Block a user