|
1 | 1 | /*
|
2 | 2 | * @test /nodynamiccopyright/
|
3 |
| - * @bug 8206986 8222169 8224031 8240964 8267119 8268670 |
| 3 | + * @bug 8206986 8222169 8224031 8240964 8267119 8268670 8321582 |
4 | 4 | * @summary Check expression switch works.
|
5 |
| - * @compile/fail/ref=ExpressionSwitch-old.out --release 9 -XDrawDiagnostics ExpressionSwitch.java |
6 | 5 | * @compile ExpressionSwitch.java
|
7 | 6 | * @run main ExpressionSwitch
|
8 | 7 | */
|
9 | 8 |
|
| 9 | +// * @compile/fail/ref=ExpressionSwitch-old.out --release 9 -XDrawDiagnostics ExpressionSwitch.java |
10 | 10 | import java.util.Objects;
|
11 | 11 | import java.util.function.Supplier;
|
12 | 12 |
|
@@ -35,6 +35,16 @@ private void run() {
|
35 | 35 | localClass(T.A);
|
36 | 36 | assertEquals(castSwitchExpressions(T.A), "A");
|
37 | 37 | testTypeInference(true, 0);
|
| 38 | + assertEquals(yieldPrimitiveDotClass("byte"), byte.class); |
| 39 | + assertEquals(yieldPrimitiveDotClass("char"), char.class); |
| 40 | + assertEquals(yieldPrimitiveDotClass("short"), short.class); |
| 41 | + assertEquals(yieldPrimitiveDotClass("int"), int.class); |
| 42 | + assertEquals(yieldPrimitiveDotClass("long"), long.class); |
| 43 | + assertEquals(yieldPrimitiveDotClass("float"), float.class); |
| 44 | + assertEquals(yieldPrimitiveDotClass("double"), double.class); |
| 45 | + assertEquals(yieldPrimitiveDotClass("void"), void.class); |
| 46 | + assertEquals(yieldPrimitiveDotClass("boolean"), boolean.class); |
| 47 | + assertEquals(yieldPrimitiveDotClass("other"), null); |
38 | 48 | }
|
39 | 49 |
|
40 | 50 | private String print(T t) {
|
@@ -140,6 +150,21 @@ private boolean yieldUnaryNotOperator(String s, boolean b) {
|
140 | 150 | };
|
141 | 151 | }
|
142 | 152 |
|
| 153 | + private Class<?> yieldPrimitiveDotClass(String s) { |
| 154 | + return switch (s) { |
| 155 | + case "byte": yield byte.class; |
| 156 | + case "char": yield char.class; |
| 157 | + case "short": yield short.class; |
| 158 | + case "int": yield int.class; |
| 159 | + case "long": yield long.class; |
| 160 | + case "float": yield float.class; |
| 161 | + case "double": yield double.class; |
| 162 | + case "void": yield void.class; |
| 163 | + case "boolean": yield boolean.class; |
| 164 | + default: yield null; |
| 165 | + }; |
| 166 | + } |
| 167 | + |
143 | 168 | private void localClass(T t) {
|
144 | 169 | String good = "good";
|
145 | 170 | class L {
|
|
0 commit comments