inline constant: do not override qualifier

This commit is contained in:
anna
2010-07-27 14:59:02 +04:00
parent 5b0a120466
commit eea315f19b
4 changed files with 31 additions and 2 deletions
@@ -165,9 +165,15 @@ class InlineConstantFieldProcessor extends BaseRefactoringProcessor {
PsiExpression qExpression = ((PsiReferenceExpression)expr).getQualifierExpression();
if (qExpression != null) {
if (initializer1 instanceof PsiMethodCallExpression) {
((PsiMethodCallExpression)initializer1).getMethodExpression().setQualifierExpression(qExpression);
PsiReferenceExpression methodExpression = ((PsiMethodCallExpression)initializer1).getMethodExpression();
if (methodExpression.getQualifierExpression() == null) {
methodExpression.setQualifierExpression(qExpression);
}
} else if (initializer1 instanceof PsiReferenceExpression) {
((PsiReferenceExpression)initializer1).setQualifierExpression(qExpression);
PsiReferenceExpression referenceExpression = (PsiReferenceExpression)initializer1;
if (referenceExpression.getQualifierExpression() == null) {
referenceExpression.setQualifierExpression(qExpression);
}
}
}
}
@@ -0,0 +1,10 @@
class QTest {
final int myI = Source.CONST;
public static void main(String[] args) {
System.out.println(new QTest().my<caret>I);
}
}
class Source {
int CONST = 0;
}
@@ -0,0 +1,9 @@
class QTest {
public static void main(String[] args) {
System.out.println(Source.CONST);
}
}
class Source {
int CONST = 0;
}
@@ -25,6 +25,10 @@ public class InlineConstantFieldTest extends LightCodeInsightTestCase {
doTest();
}
public void testQualifiedConstantExpressionReplacedWithAnotherOne() throws Exception {
doTest();
}
@Override
protected Sdk getProjectJDK() {
return JavaSdkImpl.getMockJdk17("java 1.5");