From c6603783575dc406c4abe97ed2023459ed64c387 Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 6 Apr 2012 19:58:15 +0200 Subject: [PATCH] inline: do not mess with qualifiers statically imported members (IDEA-83713) --- .../inline/InlineConstantFieldProcessor.java | 20 +++++++++---------- ...StaticallyImportedQualifiedExpression.java | 17 ++++++++++++++++ ...allyImportedQualifiedExpression.java.after | 16 +++++++++++++++ .../inline/InlineConstantFieldTest.java | 4 ++++ 4 files changed, 47 insertions(+), 10 deletions(-) create mode 100644 java/java-tests/testData/refactoring/inlineConstantField/StaticallyImportedQualifiedExpression.java create mode 100644 java/java-tests/testData/refactoring/inlineConstantField/StaticallyImportedQualifiedExpression.java.after diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineConstantFieldProcessor.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineConstantFieldProcessor.java index b5a8c619c2c2..3b8db434bb0b 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineConstantFieldProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineConstantFieldProcessor.java @@ -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); } } } diff --git a/java/java-tests/testData/refactoring/inlineConstantField/StaticallyImportedQualifiedExpression.java b/java/java-tests/testData/refactoring/inlineConstantField/StaticallyImportedQualifiedExpression.java new file mode 100644 index 000000000000..ca6a2ebecc4c --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineConstantField/StaticallyImportedQualifiedExpression.java @@ -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.CONST; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/inlineConstantField/StaticallyImportedQualifiedExpression.java.after b/java/java-tests/testData/refactoring/inlineConstantField/StaticallyImportedQualifiedExpression.java.after new file mode 100644 index 000000000000..77bf138f1fd4 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineConstantField/StaticallyImportedQualifiedExpression.java.after @@ -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(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineConstantFieldTest.java b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineConstantFieldTest.java index c7dcc14c3170..8306fbb7b9ab 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineConstantFieldTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineConstantFieldTest.java @@ -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);