jdk-24/test/langtools/tools/javac/switchextra/MultipleLabelsStatement.java
Joe Darcy b5f0eec3d8 8205626: Start of release updates for JDK 13
8205393: Add SourceVersion.RELEASE_13
8205394: Add source 13 and target 13 to javac
8205645: Bump maximum recognized class file version to 57 for JDK 13
8214825: Update preview language features for start of JDK 13

Reviewed-by: erikj, alanb, mchung, mcimadamore, dholmes, smarks, jjg
2018-12-13 19:06:11 +01:00

54 lines
1.4 KiB
Java

/*
* @test /nodynamiccopyright/
* @bug 8206986
* @summary Verify cases with multiple labels work properly.
* @compile/fail/ref=MultipleLabelsStatement-old.out -source 9 -Xlint:-options -XDrawDiagnostics MultipleLabelsStatement.java
* @compile --enable-preview -source 13 MultipleLabelsStatement.java
* @run main/othervm --enable-preview MultipleLabelsStatement
*/
import java.util.Objects;
import java.util.function.Function;
public class MultipleLabelsStatement {
public static void main(String... args) {
new MultipleLabelsStatement().run();
}
private void run() {
runTest(this::statement1);
}
private void runTest(Function<T, String> print) {
check(T.A, print, "A");
check(T.B, print, "B-C");
check(T.C, print, "B-C");
check(T.D, print, "D");
check(T.E, print, "other");
}
private String statement1(T t) {
String res;
switch (t) {
case A: res = "A"; break;
case B, C: res = "B-C"; break;
case D: res = "D"; break;
default: res = "other"; break;
}
return res;
}
private void check(T t, Function<T, String> print, String expected) {
String result = print.apply(t);
if (!Objects.equals(result, expected)) {
throw new AssertionError("Unexpected result: " + result);
}
}
enum T {
A, B, C, D, E;
}
}