From 97de4512b775f5dec5634b5fc642c04d80ffe3ee Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Mon, 25 Aug 2025 16:58:20 +0200 Subject: [PATCH] Java: report more "variable might have been assigned to" problems GitOrigin-RevId: 030936b065bb00b504a69bc08ad39ae8a28cad6f --- .../com/intellij/psi/controlFlow/ControlFlowUtil.java | 8 +++----- .../advHighlighting/AssignToFinal.java | 9 +++++++++ 2 files changed, 12 insertions(+), 5 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 f27cfb694cf9..7fc63bae8b19 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 @@ -2624,16 +2624,14 @@ public final class ControlFlowUtil { } public static @NotNull Collection getInitializedTwice(@NotNull ControlFlow flow, int startOffset, int endOffset) { + Collection result = new HashSet<>(); while (startOffset < endOffset) { InitializedTwiceClientVisitor visitor = new InitializedTwiceClientVisitor(flow, startOffset); depthFirstSearch(flow, visitor, startOffset, endOffset); - Collection result = visitor.getResult(); - if (!result.isEmpty()) { - return result; - } + result.addAll(visitor.getResult()); startOffset = findUnprocessed(startOffset, endOffset, visitor); } - return Collections.emptyList(); + return result; } private static class InitializedTwiceClientVisitor extends InstructionClientVisitor> { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java index 59ead95c3b7f..d6be2235fd64 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java @@ -160,6 +160,15 @@ class ForLoop { break; } } + + void x() { + final int a, b; + a = a = 0; + for (;; b = 0) { + b = 1; + break; + } + } } // IDEA-186305 class Asserts {