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 0cc343e57b59..f33755c9c1ef 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineConstantFieldProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineConstantFieldProcessor.java @@ -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); + } } } } diff --git a/java/java-tests/testData/refactoring/inlineConstantField/QualifiedConstantExpressionReplacedWithAnotherOne.java b/java/java-tests/testData/refactoring/inlineConstantField/QualifiedConstantExpressionReplacedWithAnotherOne.java new file mode 100644 index 000000000000..69dad46d8976 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineConstantField/QualifiedConstantExpressionReplacedWithAnotherOne.java @@ -0,0 +1,10 @@ +class QTest { + final int myI = Source.CONST; + public static void main(String[] args) { + System.out.println(new QTest().myI); + } +} + +class Source { + int CONST = 0; +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/inlineConstantField/QualifiedConstantExpressionReplacedWithAnotherOne.java.after b/java/java-tests/testData/refactoring/inlineConstantField/QualifiedConstantExpressionReplacedWithAnotherOne.java.after new file mode 100644 index 000000000000..c9d9be20793b --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineConstantField/QualifiedConstantExpressionReplacedWithAnotherOne.java.after @@ -0,0 +1,9 @@ +class QTest { + public static void main(String[] args) { + System.out.println(Source.CONST); + } +} + +class Source { + int CONST = 0; +} \ 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 9257fd73d8b4..a27675020e98 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineConstantFieldTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineConstantFieldTest.java @@ -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");