IJ-CR-103109 [java-inspections] IDEA-312036. False-positive field initializer is redundant. review fix

GitOrigin-RevId: ddbfc0e7bebfe55899771c8fea0a4b386f9f14e7
This commit is contained in:
Mikhail Pyltsin
2023-03-06 17:04:33 +00:00
committed by intellij-monorepo-bot
parent 3bf8fe1de5
commit 3025d9325f
@@ -13,7 +13,6 @@ import com.intellij.codeInspection.dataFlow.value.DfaValueFactory;
import com.intellij.codeInspection.dataFlow.value.DfaVariableValue;
import com.intellij.codeInspection.options.OptPane;
import com.intellij.java.JavaBundle;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.psi.*;
import com.intellij.psi.augment.PsiAugmentProvider;
import com.intellij.psi.controlFlow.*;
@@ -22,6 +21,8 @@ import com.intellij.psi.util.PsiUtil;
import com.intellij.util.ObjectUtils;
import com.intellij.util.containers.ContainerUtil;
import com.siyeh.ig.psiutils.EquivalenceChecker;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import org.jetbrains.annotations.NotNull;
import java.util.*;
@@ -85,7 +86,7 @@ public class DefUseInspection extends AbstractBaseJavaLocalInspectionTool {
if (parent instanceof PsiAssignmentExpression &&
((PsiAssignmentExpression)parent).getOperationTokenType() == JavaTokenType.EQ &&
EquivalenceChecker.getCanonicalPsiEquivalence().expressionsAreEquivalent(
((PsiAssignmentExpression)parent).getLExpression(), ((PsiAssignmentExpression)context).getLExpression())) {
((PsiAssignmentExpression)parent).getLExpression(), ((PsiAssignmentExpression)context).getLExpression())) {
// x = x = 5; reported by "Variable is assigned to itself"
continue;
}
@@ -267,10 +268,9 @@ public class DefUseInspection extends AbstractBaseJavaLocalInspectionTool {
List<PsiMethodCallExpression> results = new ArrayList<>();
PsiManager manager = field.getManager();
List<ControlFlowUtil.ControlFlowEdge> edges = ControlFlowUtil.getEdges(flow, 0);
Map<Integer, List<ControlFlowUtil.ControlFlowEdge>> edgesFromStart = new HashMap<>();
Int2ObjectMap<List<ControlFlowUtil.ControlFlowEdge>> edgesFromStart = new Int2ObjectOpenHashMap<>();
List<Instruction> instructions = flow.getInstructions();
for (ControlFlowUtil.ControlFlowEdge edge : edges) {
ProgressManager.checkCanceled();
List<ControlFlowUtil.ControlFlowEdge> existedEdge = edgesFromStart.get(edge.myFrom);
if (existedEdge != null) {
existedEdge.add(edge);
@@ -285,7 +285,7 @@ public class DefUseInspection extends AbstractBaseJavaLocalInspectionTool {
ArrayDeque<Integer> unprocessedInstructions = new ArrayDeque<>();
unprocessedInstructions.add(0);
while (!unprocessedInstructions.isEmpty()) {
Integer currentPoint = unprocessedInstructions.poll();
int currentPoint = unprocessedInstructions.poll();
if (instructions.size() <= currentPoint) {
return results;
}
@@ -300,7 +300,7 @@ public class DefUseInspection extends AbstractBaseJavaLocalInspectionTool {
untilAssignment.set(currentPoint);
List<ControlFlowUtil.ControlFlowEdge> nextPoints = edgesFromStart.get(currentPoint);
if (nextPoints != null) {
unprocessedInstructions.addAll(ContainerUtil.map(nextPoints, t->t.myTo));
unprocessedInstructions.addAll(ContainerUtil.map(nextPoints, t -> t.myTo));
}
}
for (int index : untilAssignment.stream().toArray()) {