mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-07 13:39:36 +07:00
[java-inspections] IDEA-363792 Incorrect inspection suggestion to replace 0.0/0.0 with 1.0
(cherry picked from commit 72ea479f6b2c3a331685175b11459556ae0a29bf) IJ-CR-150124 GitOrigin-RevId: 842566d57921ebcbe355cab6c17a6a09f08d486a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e48ed52bd5
commit
300adf91fc
@@ -17,9 +17,10 @@ package com.siyeh.ig.numeric;
|
||||
|
||||
import com.intellij.codeInspection.CleanupLocalInspectionTool;
|
||||
import com.intellij.codeInspection.LocalQuickFix;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.codeInspection.dataFlow.CommonDataflow;
|
||||
import com.intellij.codeInspection.options.OptPane;
|
||||
import com.intellij.modcommand.ModPsiUpdater;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
@@ -216,7 +217,7 @@ public final class PointlessArithmeticExpressionInspection extends BaseInspectio
|
||||
return areExpressionsIdenticalWithoutSideEffects(expressions[0], expressions[1]);
|
||||
}
|
||||
if (type.equals(JavaTokenType.DIV) || type.equals(JavaTokenType.PERC)) {
|
||||
return areExpressionsIdenticalWithoutSideEffects(expressions[0], expressions[1]) && !isZero(expressions[0]) ||
|
||||
return areExpressionsIdenticalWithoutSideEffects(expressions[0], expressions[1]) && !isZeroWithDataflow(expressions[0]) ||
|
||||
(type.equals(JavaTokenType.DIV) && isOne(expressions[1]));
|
||||
}
|
||||
if (type.equals(JavaTokenType.ASTERISK)) {
|
||||
@@ -263,7 +264,8 @@ public final class PointlessArithmeticExpressionInspection extends BaseInspectio
|
||||
for (int i = 0; i < expressions.length; i++) {
|
||||
final PsiExpression expression = expressions[i];
|
||||
if (previousExpression != null &&
|
||||
(isOne(expression) || i == 1 && areExpressionsIdenticalWithoutSideEffects(previousExpression, expression) && !isZero(expression))) {
|
||||
(isOne(expression) ||
|
||||
i == 1 && areExpressionsIdenticalWithoutSideEffects(previousExpression, expression) && !isZeroWithDataflow(expression))) {
|
||||
return true;
|
||||
}
|
||||
previousExpression = expression;
|
||||
@@ -276,6 +278,10 @@ public final class PointlessArithmeticExpressionInspection extends BaseInspectio
|
||||
!SideEffectChecker.mayHaveSideEffects(expression1);
|
||||
}
|
||||
}
|
||||
|
||||
boolean isZeroWithDataflow(@NotNull PsiExpression expression) {
|
||||
return isZero(expression) || (CommonDataflow.computeValue(expression) instanceof Number number && number.doubleValue() == 0.0d);
|
||||
}
|
||||
|
||||
boolean isZero(PsiExpression expression) {
|
||||
if (m_ignoreExpressionsContainingConstants && PsiUtil.deparenthesizeExpression(expression) instanceof PsiReferenceExpression) {
|
||||
|
||||
Reference in New Issue
Block a user