<div dir="ltr"><div style="font-family:monospace" class="gmail_default">Terribly sorry Jan, I have been using JDK 18.0.2 this entire time.</div><div style="font-family:monospace" class="gmail_default"><br></div><div style="font-family:monospace" class="gmail_default">For JDK 19, everything works, as you said. However, for JDK 18.0.2, this is my repeatable example and the corresponding error.</div><div style="font-family:monospace;margin-left:40px" class="gmail_default"><br></div><div style="font-family:monospace;margin-left:40px" class="gmail_default">public class TestExhaustivenessBug<br>{</div><div style="font-family:monospace;margin-left:40px" class="gmail_default"><br>   sealed interface SomeInterface {}<br>   record First() implements SomeInterface {}<br>   record Second() implements SomeInterface {}   <br>   <br>   private void exhaustiveIfWithFinalUninitialized()<br>   {<br>   <br>      SomeInterface abc = new First();<br>   <br>      final int numA;<br>      final int numB;<br>     <br>      if (abc instanceof First)<br>      {<br>      <br>         numA = -1;<br>         numB = -1;<br>      <br>      }<br>      <br>      else if (abc instanceof Second)<br>      {<br>      <br>         numA = -2;<br>         numB = -2;<br>      <br>      }<br>      <br>      else<br>      {<br>      <br>         throw new IllegalStateException("This shouldn't be possible!");<br>      <br>      }<br>      <br>      System.out.println(numA + "");<br>      System.out.println(numB + "");<br>      <br>   }<br><br>   private void exhaustiveSwitchWithFinalUninitialized()<br>   {<br>   <br>      final int numA;<br>      final int numB;<br>      <br>      SomeInterface abc = new First();<br>   <br>      switch (abc)<br>      {<br>      <br>         case First f  -><br>         {<br>         <br>            numA = 1;<br>            numB = 0;<br>         <br>         }<br>      <br>         case Second s -><br>         {<br>         <br>            numA = 0;<br>            numB = 1;<br>            <br>         }<br>         <br>      }<br>   <br>      System.out.println(numA + "");<br>      System.out.println(numB + "");<br>   <br>   }<br><br><br>}</div><div style="font-family:monospace" class="gmail_default"><br></div><div style="font-family:monospace" class="gmail_default">And here is the error I received.</div><div style="font-family:monospace" class="gmail_default"><br></div><div style="font-family:monospace;margin-left:40px" class="gmail_default">TestExhaustivenessBug.java:74: error: variable numA might not have been initialized<br>      System.out.println(numA + "");<br>                         ^<br>TestExhaustivenessBug.java:75: error: variable numB might not have been initialized<br>      System.out.println(numB + "");<br>                         ^<br>Note: TestExhaustivenessBug.java uses preview features of Java SE 18.<br>Note: Recompile with -Xlint:preview for details.<br>2 errors</div><div style="font-family:monospace" class="gmail_default"><br></div><div style="font-family:monospace" class="gmail_default">Apologies for the trouble and confusion.<br></div></div>