diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterHandler.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterHandler.java index 857db8d4dfb0..192f63697b90 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineParameterHandler.java @@ -266,7 +266,10 @@ public class InlineParameterHandler extends JavaInlineActionHandler { final PsiField field1 = getReferencedFinalField(expr1); final PsiField field2 = getReferencedFinalField(expr2); if (field1 != null && field1 == field2) { - return true; + PsiExpression q1 = ((PsiReferenceExpression)expr1).getQualifierExpression(); + PsiExpression q2 = ((PsiReferenceExpression)expr2).getQualifierExpression(); + return q1 == null && q2 == null || + q1 != null && q2 != null && PsiEquivalenceUtil.areElementsEquivalent(q1, q2); } Object value1 = JavaPsiFacade.getInstance(expr1.getProject()).getConstantEvaluationHelper().computeConstantExpression(expr1); Object value2 = JavaPsiFacade.getInstance(expr2.getProject()).getConstantEvaluationHelper().computeConstantExpression(expr2); diff --git a/java/java-tests/testData/refactoring/inlineParameter/RefSameFinalFieldOtherObject.java b/java/java-tests/testData/refactoring/inlineParameter/RefSameFinalFieldOtherObject.java new file mode 100644 index 000000000000..c31fb7e5a764 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineParameter/RefSameFinalFieldOtherObject.java @@ -0,0 +1,13 @@ +public class Subject { + private int myInt; + private int t; + + public void wp(int p) { + myInt += p; + } + + void foo(Subject s) { + wp(s.t); + wp(t); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineParameterTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineParameterTest.java index c281603d088f..cd424b0dd897 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineParameterTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineParameterTest.java @@ -122,6 +122,10 @@ public class InlineParameterTest extends LightRefactoringTestCase { doTestCannotFindInitializer(); } + public void testRefSameFinalFieldOtherObject() { + doTestCannotFindInitializer(); + } + public void testRef2ConstantsWithTheSameValue() { doTest(false); }