diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/PointlessBooleanExpressionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/PointlessBooleanExpressionInspection.java index de54845e934a..8ace88659f31 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/PointlessBooleanExpressionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/PointlessBooleanExpressionInspection.java @@ -275,16 +275,19 @@ public class PointlessBooleanExpressionInspection extends BaseInspection { private void buildSimplifiedAssignmentExpression(PsiAssignmentExpression expression, StringBuilder out, CommentTracker tracker) { final IElementType tokenType = expression.getOperationTokenType(); + final PsiExpression lhs = expression.getLExpression(); + if (tokenType == JavaTokenType.ANDEQ) { if (evaluate(expression.getRExpression()) == Boolean.TRUE) { if (expression.getParent() instanceof PsiExpressionStatement) { return; } - out.append(expression.getLExpression().getText()); + out.append(lhs.getText()); } else { - out.append(expression.getLExpression().getText()).append("=false"); + out.append(lhs.getText()).append("=false"); } + tracker.markUnchanged(lhs); return; } else if (tokenType == JavaTokenType.OREQ) { @@ -292,14 +295,16 @@ public class PointlessBooleanExpressionInspection extends BaseInspection { if (expression.getParent() instanceof PsiExpressionStatement) { return; } - out.append(expression.getLExpression().getText()); + out.append(lhs.getText()); } else { - out.append(expression.getLExpression().getText()).append("=true"); + out.append(lhs.getText()).append("=true"); } + tracker.markUnchanged(lhs); return; } - out.append(expression.getLExpression().getText()).append(expression.getOperationSign().getText()); + tracker.markUnchanged(lhs); + out.append(lhs.getText()).append(expression.getOperationSign().getText()); buildSimplifiedExpression(expression.getRExpression(), out, tracker); } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/pointlessboolean/CompoundAssignmentSideEffect2.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/pointlessboolean/CompoundAssignmentSideEffect2.after.java new file mode 100644 index 000000000000..0e57dcf88e47 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/pointlessboolean/CompoundAssignmentSideEffect2.after.java @@ -0,0 +1,17 @@ +class CompoundAssignmentSideEffect { + + void m() { + // 2 + /*3*/ + /*4*/ + createSomeObject(/*1*/).b = false; + } + + X createSomeObject() { + return new X(); + } + + class X { + boolean b = false; + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/pointlessboolean/CompoundAssignmentSideEffect2.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/pointlessboolean/CompoundAssignmentSideEffect2.java new file mode 100644 index 000000000000..c0d94de49dd2 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/pointlessboolean/CompoundAssignmentSideEffect2.java @@ -0,0 +1,15 @@ +class CompoundAssignmentSideEffect { + + void m() { + createSomeObject(/*1*/).b // 2 + &= /*3*//*4*/ false; + } + + X createSomeObject() { + return new X(); + } + + class X { + boolean b = false; + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/PointlessBooleanExpressionFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/PointlessBooleanExpressionFixTest.java index 107092d8dbe6..d8b909da0ac9 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/PointlessBooleanExpressionFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/PointlessBooleanExpressionFixTest.java @@ -26,4 +26,5 @@ public class PointlessBooleanExpressionFixTest extends IGQuickFixesTestCase { public void testCompoundAssignment2() { doTest(); } public void testCompoundAssignment3() { doTest(); } public void testCompoundAssignmentSideEffect() { doTest(InspectionGadgetsBundle.message("boolean.expression.remove.compound.assignment.quickfix")); } + public void testCompoundAssignmentSideEffect2() { doTest(); } }