diff options
author | Tor Norbye <tnorbye@google.com> | 2014-09-04 13:24:04 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2014-09-04 13:24:04 -0700 |
commit | c3d3a90f6b4ead083d63e28e6b9fcea93d675678 (patch) | |
tree | fc0dcd722b6d445468dbe7dad13b4c11781b1cbe /plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java | |
parent | 1aa2e09bdbd413eacb677e9fa4b50630530d0656 (diff) | |
download | idea-c3d3a90f6b4ead083d63e28e6b9fcea93d675678.tar.gz |
Snapshot idea/138.1980 from git://git.jetbrains.org/idea/community.git
Change-Id: Ib567c9c152d770212a7a3db20fbf591c210920bd
Diffstat (limited to 'plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java')
-rw-r--r-- | plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java index 023b4bc9f949..2dde6969545d 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java @@ -29,6 +29,7 @@ import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.PsiReplacementUtil; import com.siyeh.ig.psiutils.EquivalenceChecker; import com.siyeh.ig.psiutils.ExpressionUtils; +import com.siyeh.ig.psiutils.SideEffectChecker; import gnu.trove.THashSet; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -232,7 +233,7 @@ public class PointlessArithmeticExpressionInspection for (int i = 0; i < expressions.length; i++) { PsiExpression expression = expressions[i]; if (previousExpression != null && - (isZero(expression) || i == 1 && EquivalenceChecker.expressionsAreEquivalent(previousExpression, expression))) { + (isZero(expression) || areExpressionsIdenticalWithoutSideEffects(previousExpression, expression, i))) { return true; } previousExpression = expression; @@ -260,9 +261,10 @@ public class PointlessArithmeticExpressionInspection private boolean divideExpressionIsPointless(PsiExpression[] expressions) { PsiExpression previousExpression = null; - for (PsiExpression expression : expressions) { + for (int i = 0; i < expressions.length; i++) { + final PsiExpression expression = expressions[i]; if (previousExpression != null && - (isOne(expression) || EquivalenceChecker.expressionsAreEquivalent(previousExpression, expression))) { + (isOne(expression) || areExpressionsIdenticalWithoutSideEffects(previousExpression, expression, i))) { return true; } previousExpression = expression; @@ -272,15 +274,21 @@ public class PointlessArithmeticExpressionInspection private boolean modExpressionIsPointless(PsiExpression[] expressions) { PsiExpression previousExpression = null; - for (PsiExpression expression : expressions) { + for (int i = 0; i < expressions.length; i++) { + final PsiExpression expression = expressions[i]; if (previousExpression != null && - (isOne(expression) || EquivalenceChecker.expressionsAreEquivalent(previousExpression, expression))) { + (isOne(expression) || areExpressionsIdenticalWithoutSideEffects(previousExpression, expression, i))) { return true; } previousExpression = expression; } return false; } + + private boolean areExpressionsIdenticalWithoutSideEffects(PsiExpression expression1, PsiExpression expression2, int index) { + return index == 1 && EquivalenceChecker.expressionsAreEquivalent(expression1, expression2) && + !SideEffectChecker.mayHaveSideEffects(expression1); + } } boolean isZero(PsiExpression expression) { |