/** * @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; }; } }