mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-14 16:17:34 +00:00
[jdk22] Adds support for unnamed variables (JEP 456)
This commit is contained in:
1 parent
a54ec7005e
commit
23307eb8d1
3 files changed
+151
-1
No files matched your search
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2016-2021 The Project Lombok Authors.
|
||||
* Copyright (C) 2016-2024 The Project Lombok Authors.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -263,6 +263,14 @@ public class PrettyPrinter extends JCTree.Visitor {
|
||||
return false;
|
||||
}
|
||||
|
||||
private void print(Name name) {
|
||||
if (name.isEmpty()) {
|
||||
print("_");
|
||||
} else {
|
||||
print(name.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private void print(CharSequence s) {
|
||||
boolean align = needsAlign;
|
||||
if (needsNewLine && !onNewLine) println();
|
||||
@@ -1722,6 +1730,8 @@ public class PrettyPrinter extends JCTree.Visitor {
|
||||
printPatternCaseLabel(tree);
|
||||
} else if (className.endsWith("$JCRecordPattern")) { // Introduced in JDK19
|
||||
printRecordPattern(tree);
|
||||
} else if (className.endsWith("$JCAnyPattern")) { // Introduced in JDK22
|
||||
print("_");
|
||||
} else {
|
||||
throw new AssertionError("Unhandled tree type: " + tree.getClass() + ": " + tree);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
// version 22:
|
||||
import java.util.Arrays;
|
||||
import java.util.Scanner;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
record Box<T>(T content) {
|
||||
}
|
||||
|
||||
record Pair<T, U>(T first, U second) {
|
||||
}
|
||||
|
||||
public class UnnamedVariables {
|
||||
void enhancedLoop() {
|
||||
for (String _ : Arrays.asList("")) {
|
||||
}
|
||||
}
|
||||
|
||||
void initializationInForLoop() {
|
||||
for (int i = 0, _ = Integer.MAX_VALUE; i < 10; i++) {
|
||||
}
|
||||
}
|
||||
|
||||
void assignment() {
|
||||
var _ = 1;
|
||||
}
|
||||
|
||||
void catchBlock() {
|
||||
try {
|
||||
} catch (Exception _) {
|
||||
}
|
||||
}
|
||||
|
||||
void tryWithResources() {
|
||||
try (var _ = new Scanner("")) {
|
||||
}
|
||||
}
|
||||
|
||||
void lambda() {
|
||||
Stream.of(1).forEach(_ -> {
|
||||
});
|
||||
}
|
||||
|
||||
Object switchStatement(Object o) {
|
||||
return switch (o) {
|
||||
case String _, Integer _ -> o;
|
||||
case Long _ -> o;
|
||||
default -> o;
|
||||
};
|
||||
}
|
||||
|
||||
void recordPattern(Object o) {
|
||||
if (o instanceof Pair(Box _, Box(Integer _))) {
|
||||
}
|
||||
if (o instanceof Box(String _)) {
|
||||
}
|
||||
if (o instanceof Box(var _)) {
|
||||
}
|
||||
if (o instanceof Box(_)) {
|
||||
}
|
||||
}
|
||||
|
||||
Object recordPatternSwitch(Object o) {
|
||||
return switch (o) {
|
||||
case Box(String _), Box(Integer _) -> o;
|
||||
case Box(Long _) -> o;
|
||||
case Box(_) -> o;
|
||||
default -> o;
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
// version 22:
|
||||
import java.util.Arrays;
|
||||
import java.util.Scanner;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
record Box<T>(T content) {
|
||||
}
|
||||
|
||||
record Pair<T, U>(T first, U second) {
|
||||
}
|
||||
|
||||
public class UnnamedVariables {
|
||||
void enhancedLoop() {
|
||||
for (String _ : Arrays.asList("")) {
|
||||
}
|
||||
}
|
||||
|
||||
void initializationInForLoop() {
|
||||
for (int i = 0, _ = Integer.MAX_VALUE; i < 10; i++) {
|
||||
}
|
||||
}
|
||||
|
||||
void assignment() {
|
||||
var _ = 1;
|
||||
}
|
||||
|
||||
void catchBlock() {
|
||||
try {
|
||||
} catch (Exception _) {
|
||||
}
|
||||
}
|
||||
|
||||
void tryWithResources() {
|
||||
try (var _ = new Scanner("")) {
|
||||
}
|
||||
}
|
||||
|
||||
void lambda() {
|
||||
Stream.of(1).forEach(_ -> {
|
||||
});
|
||||
}
|
||||
|
||||
Object switchStatement(Object o) {
|
||||
return switch (o) {
|
||||
case String _, Integer _ -> o;
|
||||
case Long _ -> o;
|
||||
default -> o;
|
||||
};
|
||||
}
|
||||
|
||||
void recordPattern(Object o) {
|
||||
if (o instanceof Pair(Box _, Box(Integer _))) {
|
||||
}
|
||||
if (o instanceof Box(String _)) {
|
||||
}
|
||||
if (o instanceof Box(var _)) {
|
||||
}
|
||||
if (o instanceof Box(_)) {
|
||||
}
|
||||
}
|
||||
|
||||
Object recordPatternSwitch(Object o) {
|
||||
return switch (o) {
|
||||
case Box(String _), Box(Integer _) -> o;
|
||||
case Box(Long _) -> o;
|
||||
case Box(_) -> o;
|
||||
default -> o;
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user