| /** |
| * @test /nodynamiccopyright/ |
| * @bug 8314578 |
| * @enablePreview |
| * @summary Parsing of erroneous patterns succeeds |
| * @compile/fail/ref=T8314578.out -XDrawDiagnostics T8314578.java |
| */ |
| public class T8314578 { |
| record R1() {} |
| record R2() {} |
| |
| static void test(Object o) { |
| switch (o) { |
| case R1() when o instanceof String s: |
| case R2() when o instanceof Integer i: |
| System.out.println("hello: " + i); |
| break; |
| default: |
| break; |
| } |
| } |
| |
| static void test2(Object o) { |
| switch (o) { |
| case R1() when o instanceof String s: |
| System.out.println("hello: " + s); |
| case R2() when o instanceof Integer i: |
| System.out.println("hello: " + i); |
| break; |
| default: |
| break; |
| } |
| } |
| |
| static int unnamedInGuardsOK(String s) { |
| return switch (s) { |
| case String _ when s instanceof String _ -> // should be OK |
| 1; |
| default -> |
| -1; |
| }; |
| } |
| } |