jdk-24/test/langtools/tools/javac/patterns/T8314578.java

43 lines
1.1 KiB
Java

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