[java-psi] ControlFlowUtil: avoid storing null mappings into the map

This improves performance and makes the code clearer

GitOrigin-RevId: 2b8d9ae1b354f2a2018e313b2009209e0f7f8ef3
This commit is contained in:
Tagir Valeev
2025-09-15 08:54:14 +00:00
committed by intellij-monorepo-bot
parent 16920f7f48
commit 9d80ffaa8a
@@ -14,6 +14,7 @@ import com.intellij.util.*;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.UnmodifiableHashMap;
import it.unimi.dsi.fastutil.ints.*;
import one.util.streamex.StreamEx;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -2588,7 +2589,9 @@ public final class ControlFlowUtil {
if (latestWriteVarExpression == null) {
final PsiReferenceExpression expression = getExpression(myFlow.getElement(offset));
writeVars = writeVars.with(variable, expression);
if (expression != null) {
writeVars = writeVars.with(variable, expression);
}
}
else {
writeTwiceVars = writeTwiceVars.with(variable, latestWriteVarExpression);
@@ -2615,12 +2618,8 @@ public final class ControlFlowUtil {
if (writeVars.isEmpty()) return null;
PsiManager psiManager = variable.getManager();
for (Map.Entry<PsiVariable, PsiReferenceExpression> variableInfo : writeVars.entrySet()) {
if (psiManager.areElementsEquivalent(variableInfo.getKey(), variable)) {
return variableInfo.getValue();
}
}
return null;
return StreamEx.ofValues(writeVars, v -> psiManager.areElementsEquivalent(v, variable))
.findFirst().orElse(null);
}
@Override