inline: do not mess with qualifiers statically imported members (IDEA-83713)

This commit is contained in:
anna
2012-04-06 20:33:01 +02:00
parent 0c75f95c10
commit c660378357
4 changed files with 47 additions and 10 deletions
@@ -165,16 +165,16 @@ public class InlineConstantFieldProcessor extends BaseRefactoringProcessor {
if (expr instanceof PsiReferenceExpression) {
PsiExpression qExpression = ((PsiReferenceExpression)expr).getQualifierExpression();
if (qExpression != null) {
if (initializer1 instanceof PsiMethodCallExpression) {
PsiReferenceExpression methodExpression = ((PsiMethodCallExpression)initializer1).getMethodExpression();
if (methodExpression.getQualifierExpression() == null) {
methodExpression.setQualifierExpression(qExpression);
}
} else if (initializer1 instanceof PsiReferenceExpression) {
PsiReferenceExpression referenceExpression = (PsiReferenceExpression)initializer1;
if (referenceExpression.getQualifierExpression() == null) {
referenceExpression.setQualifierExpression(qExpression);
}
PsiReferenceExpression referenceExpression = null;
if (initializer1 instanceof PsiReferenceExpression) {
referenceExpression = (PsiReferenceExpression)initializer1;
} else if (initializer1 instanceof PsiMethodCallExpression) {
referenceExpression = ((PsiMethodCallExpression)initializer1).getMethodExpression();
}
if (referenceExpression != null &&
referenceExpression.getQualifierExpression() == null &&
!(referenceExpression.advancedResolve(false).getCurrentFileResolveScope() instanceof PsiImportStaticStatement)) {
referenceExpression.setQualifierExpression(qExpression);
}
}
}
@@ -0,0 +1,17 @@
package p;
import static p.C.mock;
class C {
public static String mock() {
return null;
}
}
class D {
public static final String CONST = mock();
}
class QTest {
public static void main(String[] args) {
String s = D.CON<caret>ST;
}
}
@@ -0,0 +1,16 @@
package p;
import static p.C.mock;
class C {
public static String mock() {
return null;
}
}
class D {
}
class QTest {
public static void main(String[] args) {
String s = mock();
}
}
@@ -26,6 +26,10 @@ public class InlineConstantFieldTest extends LightRefactoringTestCase {
public void testQualifiedConstantExpressionReplacedWithAnotherOne() throws Exception {
doTest();
}
public void testStaticallyImportedQualifiedExpression() throws Exception {
doTest();
}
private void doTest() throws Exception {
String name = getTestName(false);