1
0
Fork 0
vim/runtime/syntax/testdir/input/java_switch.java
Daniel Baumann 0985b09abd
Adding upstream version 2:9.1.1230.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-21 11:09:31 +02:00

122 lines
2.7 KiB
Java

class SwitchTests // JDK 21+.
{
static void echo(Object o) { System.out.println(o); }
static {
interface Yieldable<T>
{
T yield();
default Yieldable<T> default_() { return this; }
default Yieldable<T> when() { return this; }
}
// There are 80 bytes (\@80<!) between "::" and "yield;".
Yieldable<?> y = ((Yieldable<?>) () -> 0)::
yield;
((Yieldable<?>) () -> 0).when().default_().yield();
enum Letters { OTHER, ALPHA, BETA }
Letters when = Letters.OTHER;
switch (when) {
case ALPHA: { echo(Letters.ALPHA); break; }
case BETA: { echo(Letters.BETA); break; }
default: { echo(Letters.OTHER); }
}
echo(switch (when) {
case ALPHA -> Letters.ALPHA;
case BETA -> Letters.BETA;
default -> { yield(Letters.OTHER); }
});
String yield = null;
switch (yield) {
case "A": case "B": { echo("A or B"); break; }
case ":": { echo("Colon"); break; }
case String str when !str.equals(""):
{ echo("<non-empty>"); break; }
case null: default: { echo("Other"); }
}
echo(switch (yield) {
case "A", "B" -> { yield("A or B"); }
case "->" -> "Arrow";
case String str when !str.equals("")
-> "<non-empty>";
case null, default -> "Other";
});
Object o = new Object();
switch (o) {
case null: { echo("null"); break; }
case Letters[] ll: { echo("SwitchTests$1Letters[]"); break; }
default: { echo("java.lang.Object"); break; }
}
echo(switch (o) {
case null -> "null";
case Letters[] ll -> "SwitchTests$1Letters[]";
default -> "java.lang.Object";
});
char ch = 'c';
switch (ch) {
case 'a': { echo('a'); break; }
case 'b': { echo('b'); break; }
default: { echo('\u0000'); break; }
}
echo(switch (ch) {
case 'a' -> 'a';
case 'b' -> 'b';
default -> '\u0000';
});
byte b = (byte) 2;
switch (b) {
case ((byte) 0): { echo((byte) 0); break; }
case ((byte) 1): { echo((byte) 1); break; }
default: { echo((byte) -1); break; }
}
echo(switch (b) {
case ((byte) 0) -> (byte) 0;
case ((byte) 1) -> (byte) 1;
default -> (byte) -1;
});
short sh = (short) 2;
switch (sh) {
case ((short) 0): { echo((short) 0); break; }
case ((short) 1): { echo((short) 1); break; }
default: { echo((short) -1); break; }
}
echo(switch (sh) {
case ((short) 0) -> (short) 0;
case ((short) 1) -> (short) 1;
default -> (short) -1;
});
int i = 2;
switch (i) {
case 0b0__00___000: { echo(0); break; }
case 0x000___00__1: { echo(1); break; }
default: { echo(-1); break; }
}
echo(switch (i) {
case 0_0_0_0_0 -> 0;
case 1 -> 1;
default -> -1;
});
}
}