Files
vim/runtime/syntax/testdir/input/java_previews_455.java
Aliaksei Budavei 4d0ad5cb9b runtime(java): Make changes for JDK 27
Reintroduce supported syntax-preview-feature numbers 455,
488, 507, and 530 as _a new number_ 532.

Reference:
https://openjdk.org/jeps/532 (Primitive Types in Patterns etc.)

closes: #21341

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-09-24 18:44:52 +00:00

89 lines
1.6 KiB
Java

// VIM_TEST_SETUP let g:java_syntax_previews = [455, 488, 507, 530, 532]
import java.util.function.Predicate;
class PrimitiveSwitchTests // JDK 23+ (--enable-preview --release 23).
{
static void echo(Object o) { System.out.println(o); }
static {
long g = 2L;
switch (g) {
case 0L: { echo(0L); break; }
case 1L: { echo(1L); break; }
default: { echo(-1L); break; }
}
echo(switch (g) {
case 0L -> 0L;
case 1L -> 1L;
default -> -1L;
});
boolean bool = false;
switch (bool) {
case true: { echo(true); break; }
case false: { echo(false); break; }
}
echo(switch (bool) {
case true -> true;
case false -> false;
});
float f = 2.0f;
switch (f) {
case 0.0f: { echo(0.0f); break; }
case 1.0f: { echo(1.0f); break; }
default: { echo(-1.0f); break; }
}
echo(switch (f) {
case 0.0f -> 0.0f;
case 1.0f -> 1.0f;
default -> -1.0f;
});
double d = 2.0;
switch (d) {
case 0.0: { echo(0.0); break; }
case 1.0: { echo(1.0); break; }
default: { echo(-1.0); break; }
}
echo(switch (d) {
case 0.0 -> 0.0;
case 1.0 -> 1.0;
default -> -1.0;
});
final Predicate<Integer> p = n -> n != 0;
try {
echo(xor(_ -> false, false, false));
echo(xor(p, 1, 0));
echo(xor(p, 0, 1));
echo(xor(p, 1, 1));
} catch (final ArithmeticException _) {
}
}
static <T> boolean xor(Predicate<T> p, T x, T y)
{
record Pair<T>(T x, T y) { }
return switch (new Pair<>(x, y)) {
case Pair(boolean x_, boolean y_) -> x_ ^ y_;
case Pair(boolean x_, _) -> x_ ^ p.test(y);
case Pair(var _, boolean y_) -> p.test(x) ^ y_;
case Pair<?> _ -> p.test(x) ^ p.test(y);
};
}
}