From 9d80ffaa8aefc188708af963b9dce92df47165ce Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Thu, 11 Sep 2025 17:49:47 +0200 Subject: [PATCH] [java-psi] ControlFlowUtil: avoid storing null mappings into the map This improves performance and makes the code clearer GitOrigin-RevId: 2b8d9ae1b354f2a2018e313b2009209e0f7f8ef3 --- .../intellij/psi/controlFlow/ControlFlowUtil.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowUtil.java b/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowUtil.java index 3588b3d13817..1f8ebb960138 100644 --- a/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowUtil.java @@ -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 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