From c36419f86756a875964b341bed831264c1f62043 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 27 Jan 2012 21:46:36 +0400 Subject: [PATCH] inline: warn if assignment with operation (IDEA-80348) --- .../intellij/refactoring/inline/InlineLocalHandler.java | 4 +++- .../testData/refactoring/inlineLocal/NonEqAssignment.java | 7 +++++++ .../com/intellij/refactoring/inline/InlineLocalTest.java | 4 ++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/inlineLocal/NonEqAssignment.java diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineLocalHandler.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineLocalHandler.java index 27f6694cdf21..2046e152a3d4 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineLocalHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineLocalHandler.java @@ -308,7 +308,9 @@ public class InlineLocalHandler extends JavaInlineActionHandler { } if (def instanceof PsiReferenceExpression && def.getParent() instanceof PsiAssignmentExpression) { - final PsiExpression rExpr = ((PsiAssignmentExpression)def.getParent()).getRExpression(); + final PsiAssignmentExpression assignmentExpression = (PsiAssignmentExpression)def.getParent(); + if (assignmentExpression.getOperationTokenType() != JavaTokenType.EQ) return null; + final PsiExpression rExpr = assignmentExpression.getRExpression(); if (rExpr != null) return rExpr; } } diff --git a/java/java-tests/testData/refactoring/inlineLocal/NonEqAssignment.java b/java/java-tests/testData/refactoring/inlineLocal/NonEqAssignment.java new file mode 100644 index 000000000000..c69ec617abed --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineLocal/NonEqAssignment.java @@ -0,0 +1,7 @@ +class Test { + void foo() { + int x = 1; + x += 1; + int y = x; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java index e4bde4df16c0..472d877af6ad 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java @@ -132,6 +132,10 @@ public class InlineLocalTest extends LightCodeInsightTestCase { doTest(true); } + public void testNonEqAssignment() throws Exception { + doTest(false, "Cannot perform refactoring.\n" + + "Variable 'x' is accessed for writing."); + } private void doTest(final boolean inlineDef, String conflictMessage) throws Exception { try {