RFR: 8367499: Refactor exhaustiveness computation from Flow into a separate class

Jan Lahoda jlahoda at openjdk.org
Fri Sep 12 09:57:04 UTC 2025


Currently the switch exhaustiveness computation code is part of `Flow`. And while conceptually the check is part of the `Flow` phase, the code is >500 lines of code currently, and likely to get bigger/more complicated in the future. Among other reasons due to enhancements like https://bugs.openjdk.org/browse/JDK-8367530.

The proposal herein is to move the exhaustiveness computation to a separate class `ExhastivenessComputer`. There's no functional change, only move of the code. This is intentional, to aid the review process.

One possibility to inspect what is happening is:

git show upstream/pr/27247:src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java >/tmp/Flow-original.java
diff -d -w /tmp/Flow-original.java src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ExhaustivenessComputer.java >/tmp/exhaustivenesscomputer-comparison.diff
diff -d -w /tmp/Flow-original.java src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java >/tmp/flow-comparison.diff

and inspecting `/tmp/exhaustivenesscomputer-comparison.diff`, `/tmp/flow-comparison.diff`.

-------------

Depends on: https://git.openjdk.org/jdk/pull/27247

Commit messages:
 - 8367499: Refactor exhaustiveness computation from Flow into a separate class

Changes: https://git.openjdk.org/jdk/pull/27253/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27253&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8367499
  Stats: 1217 lines in 2 files changed: 640 ins; 574 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/27253.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27253/head:pull/27253

PR: https://git.openjdk.org/jdk/pull/27253


More information about the compiler-dev mailing list