author | jlahoda |
Wed, 29 Aug 2018 09:36:17 +0200 | |
changeset 51563 | de411d537aae |
child 53023 | 6879069d9d94 |
permissions | -rw-r--r-- |
51563
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
1 |
/* |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
2 |
* @test /nodynamiccopyright/ |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
3 |
* @bug 8206986 |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
4 |
* @summary Verify cases with multiple labels work properly. |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
5 |
* @compile/fail/ref=MultipleLabelsExpression-old.out -source 9 -Xlint:-options -XDrawDiagnostics MultipleLabelsExpression.java |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
6 |
* @compile --enable-preview -source 12 MultipleLabelsExpression.java |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
7 |
* @run main/othervm --enable-preview MultipleLabelsExpression |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
8 |
*/ |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
9 |
|
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
10 |
import java.util.Objects; |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
11 |
import java.util.function.Function; |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
12 |
|
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
13 |
public class MultipleLabelsExpression { |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
14 |
public static void main(String... args) { |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
15 |
new MultipleLabelsExpression().run(); |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
16 |
} |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
17 |
|
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
18 |
private void run() { |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
19 |
runTest(this::expression1); |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
20 |
} |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
21 |
|
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
22 |
private void runTest(Function<T, String> print) { |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
23 |
check(T.A, print, "A"); |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
24 |
check(T.B, print, "B-C"); |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
25 |
check(T.C, print, "B-C"); |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
26 |
check(T.D, print, "D"); |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
27 |
check(T.E, print, "other"); |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
28 |
} |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
29 |
|
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
30 |
private String expression1(T t) { |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
31 |
return switch (t) { |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
32 |
case A -> "A"; |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
33 |
case B, C -> { break "B-C"; } |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
34 |
case D -> "D"; |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
35 |
default -> "other"; |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
36 |
}; |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
37 |
} |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
38 |
|
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
39 |
private void check(T t, Function<T, String> print, String expected) { |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
40 |
String result = print.apply(t); |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
41 |
if (!Objects.equals(result, expected)) { |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
42 |
throw new AssertionError("Unexpected result: " + result); |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
43 |
} |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
44 |
} |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
45 |
|
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
46 |
enum T { |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
47 |
A, B, C, D, E; |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
48 |
} |
de411d537aae
8206986: Compiler support for Switch Expressions (Preview)
jlahoda
parents:
diff
changeset
|
49 |
} |