summaryrefslogtreecommitdiff
path: root/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2014-09-04 13:24:04 -0700
committerTor Norbye <tnorbye@google.com>2014-09-04 13:24:04 -0700
commitc3d3a90f6b4ead083d63e28e6b9fcea93d675678 (patch)
treefc0dcd722b6d445468dbe7dad13b4c11781b1cbe /plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/numeric/PointlessArithmeticExpressionInspection.java
parent1aa2e09bdbd413eacb677e9fa4b50630530d0656 (diff)
downloadidea-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.java18
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) {