<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:monospace">CC'ing the Amber Dev Team.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 10, 2023 at 4:21 AM Mikhail Pyltsin <<a href="mailto:pyltsinm@gmail.com">pyltsinm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">  Hi!<br>I am investigating a new version of jep440+441 <div>(<a href="https://cr.openjdk.org/~gbierman/jep440%2B441/jep440+441-20230612/specs/patterns-switch-record-patterns-jls.html" target="_blank">https://cr.openjdk.org/~gbierman/jep440%2B441/jep440+441-20230612/specs/patterns-switch-record-patterns-jls.html</a>)</div><div>After `<span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px;font-style:italic">2023-06-12: Misc editorial changes.</span>` I can't find any explicit mention that it is allowed to use qualified names for enums in `old` switch.</div><div>But according to <a href="https://openjdk.org/jeps/441" target="_blank">https://openjdk.org/jeps/441</a> it must be allowed <br>```<br><pre style="font-family:"DejaVu Sans Mono","Bitstream Vera Sans Mono","Luxi Mono","Courier New",monospace;font-size:13.3333px;padding-left:2em;margin-top:1ex;margin-bottom:1ex;color:rgb(0,0,0)"><code style="font-family:"DejaVu Sans Mono","Bitstream Vera Sans Mono","Luxi Mono","Courier New",monospace">static void goodEnumSwitch2(Coin c) {
    switch (c) {
        case HEADS -> {
            System.out.println("Heads");
        }
        case Coin.TAILS -> {    // Unnecessary qualification but allowed
            System.out.println("Tails");
        }
    }
}</code></pre><br>```<br>before  `<span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px;font-style:italic">2023-06-12: Misc editorial changes.</span>`, It was<br>```<span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">Every</span><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"> </span><code style="color:rgb(0,0,0);font-size:13.3333px;font-family:"DejaVu Sans Mono","Bitstream Vera Sans Mono","Luxi Mono","Courier New",monospace">case</code><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"> </span><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">constant must be either (1) the</span><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"> </span><code style="color:rgb(0,0,0);font-size:13.3333px;font-family:"DejaVu Sans Mono","Bitstream Vera Sans Mono","Luxi Mono","Courier New",monospace">null</code><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"> </span><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">literal, (2) a constant expression (</span><a href="https://docs.oracle.com/javase/specs/jls/se19/html/jls-15.html#jls-15.29" style="color:rgb(74,103,130);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px;text-decoration-line:none" target="_blank">15.29</a><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">), or (3) the (simple or qualified)</span><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"> </span><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">name of an enum constant (</span><a href="https://docs.oracle.com/javase/specs/jls/se19/html/jls-8.html#jls-8.9.1" style="color:rgb(74,103,130);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px;text-decoration-line:none" target="_blank">8.9.1</a><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">); otherwise a compile-time error occurs. A single</span><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"> </span><code style="color:rgb(0,0,0);font-size:13.3333px;font-family:"DejaVu Sans Mono","Bitstream Vera Sans Mono","Luxi Mono","Courier New",monospace">null</code><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"> </span><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">case constant may also be paired with the</span><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"> </span><code style="color:rgb(0,0,0);font-size:13.3333px;font-family:"DejaVu Sans Mono","Bitstream Vera Sans Mono","Luxi Mono","Courier New",monospace">default</code><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"> </span><span style="color:rgb(0,0,0);font-family:"DejaVu Sans","Bitstream Vera Sans","Luxi Sans",Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">keyword.</span></div>```,  but now there is no mention of the type of enum names.<br><br>Could you help me, which point allows it now?<br><br>This question arose because the next code doesn't produce errors:<br>```<br>    enum EN{A, B}<br><br>    public void test(EN en) {<br>        switch (en) {<br>            case A -> System.out.println("a");<br>            case EN.A -> System.out.println("a too");<br>            case EN.B -> System.out.println("b");<br>        }<br>    }<br>```<br>Is this expected?<br><div></div><div><br></div></div>
</blockquote></div></div>