aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRawi01 <Rawi01@users.noreply.github.com>2023-02-18 23:04:51 +0100
committerRoel Spilker <r.spilker@gmail.com>2023-03-21 16:12:22 +0100
commit83c4dcfd5257975e9582be017bf66a7232cc2cbb (patch)
tree69b6d689b20d11ebb7f7cebeb05084a248a64046
parente5c324c615c1e304b2a9a64bc7f8608a67b0a74e (diff)
downloadlombok-83c4dcfd5257975e9582be017bf66a7232cc2cbb.tar.gz
lombok-83c4dcfd5257975e9582be017bf66a7232cc2cbb.tar.bz2
lombok-83c4dcfd5257975e9582be017bf66a7232cc2cbb.zip
[jdk20] Updates support for record patterns
-rw-r--r--src/delombok/lombok/delombok/PrettyPrinter.java13
-rw-r--r--test/pretty/resource/after/RecordPattern19.java (renamed from test/pretty/resource/after/RecordPattern.java)4
-rw-r--r--test/pretty/resource/after/RecordPattern20.java22
-rw-r--r--test/pretty/resource/before/RecordPattern19.java (renamed from test/pretty/resource/before/RecordPattern.java)6
-rw-r--r--test/pretty/resource/before/RecordPattern20.java23
5 files changed, 59 insertions, 9 deletions
diff --git a/src/delombok/lombok/delombok/PrettyPrinter.java b/src/delombok/lombok/delombok/PrettyPrinter.java
index 13836d77..b8b38da9 100644
--- a/src/delombok/lombok/delombok/PrettyPrinter.java
+++ b/src/delombok/lombok/delombok/PrettyPrinter.java
@@ -1253,7 +1253,14 @@ public class PrettyPrinter extends JCTree.Visitor {
@Override public void visitForeachLoop(JCEnhancedForLoop tree) {
aPrint("for (");
- printVarDefInline(tree.var);
+ JCTree varOrRecordPattern = readObject(tree, "varOrRecordPattern", null);
+ if (varOrRecordPattern instanceof JCVariableDecl) {
+ printVarDefInline((JCVariableDecl) varOrRecordPattern);
+ } else if (varOrRecordPattern != null) {
+ print(varOrRecordPattern);
+ } else {
+ printVarDefInline(tree.var);
+ }
print(" : ");
print(tree.expr);
print(") ");
@@ -1427,9 +1434,7 @@ public class PrettyPrinter extends JCTree.Visitor {
void printBindingPattern(JCTree tree) {
JCTree var = readObject(tree, "var", tree);
- print((JCExpression) readObject(var, "vartype", null));
- print(" ");
- print((Name) readObject(var, "name", null));
+ printVarDef0((JCVariableDecl) var);
}
void printDefaultCase(JCTree tree) {
diff --git a/test/pretty/resource/after/RecordPattern.java b/test/pretty/resource/after/RecordPattern19.java
index ad9fae0b..68b39266 100644
--- a/test/pretty/resource/after/RecordPattern.java
+++ b/test/pretty/resource/after/RecordPattern19.java
@@ -3,13 +3,13 @@ record Point(int x, int y) {
record Rectangle(Point upperLeft, Point lowerRight) {
}
-public class RecordPattern {
+public class RecordPattern19 {
void recordPattern(Object o) {
if (o instanceof Point(int x, int y)) {
}
if (o instanceof Point(int x, int y) p) {
}
- if (o instanceof Rectangle(Point(int x1, int y1), Point(int x2, int y2))) {
+ if (o instanceof Rectangle(Point(var x1, var y1), Point(int x2, int y2))) {
}
}
} \ No newline at end of file
diff --git a/test/pretty/resource/after/RecordPattern20.java b/test/pretty/resource/after/RecordPattern20.java
new file mode 100644
index 00000000..365b139f
--- /dev/null
+++ b/test/pretty/resource/after/RecordPattern20.java
@@ -0,0 +1,22 @@
+record Point(int x, int y) {
+}
+record Rectangle(Point upperLeft, Point lowerRight) {
+}
+
+public class RecordPattern20 {
+ void recordPattern(Object o) {
+ if (o instanceof Point(int x, int y)) {
+ }
+ if (o instanceof Rectangle(Point(var x1, var y1), Point(int x2, int y2))) {
+ }
+ }
+
+ void forEachSimple(Point[] pointArray) {
+ for (Point(var x, var y) : pointArray) {
+ }
+ }
+ void forEachNested(Rectangle[] rectangleArray) {
+ for (Rectangle(Point(var x1, var y1), Point p) : rectangleArray) {
+ }
+ }
+} \ No newline at end of file
diff --git a/test/pretty/resource/before/RecordPattern.java b/test/pretty/resource/before/RecordPattern19.java
index 93c07965..4c417174 100644
--- a/test/pretty/resource/before/RecordPattern.java
+++ b/test/pretty/resource/before/RecordPattern19.java
@@ -1,16 +1,16 @@
-// version 19:
+// version 19:19
record Point(int x, int y) {
}
record Rectangle(Point upperLeft, Point lowerRight) {
}
-public class RecordPattern {
+public class RecordPattern19 {
void recordPattern(Object o) {
if (o instanceof Point(int x, int y)) {
}
if (o instanceof Point(int x, int y) p) {
}
- if (o instanceof Rectangle(Point(int x1, int y1), Point(int x2, int y2))) {
+ if (o instanceof Rectangle(Point(var x1, var y1), Point(int x2, int y2))) {
}
}
} \ No newline at end of file
diff --git a/test/pretty/resource/before/RecordPattern20.java b/test/pretty/resource/before/RecordPattern20.java
new file mode 100644
index 00000000..8604215b
--- /dev/null
+++ b/test/pretty/resource/before/RecordPattern20.java
@@ -0,0 +1,23 @@
+// version 20:
+record Point(int x, int y) {
+}
+record Rectangle(Point upperLeft, Point lowerRight) {
+}
+
+public class RecordPattern20 {
+ void recordPattern(Object o) {
+ if (o instanceof Point(int x, int y)) {
+ }
+ if (o instanceof Rectangle(Point(var x1, var y1), Point(int x2, int y2))) {
+ }
+ }
+
+ void forEachSimple(Point[] pointArray) {
+ for (Point(var x, var y) : pointArray) {
+ }
+ }
+ void forEachNested(Rectangle[] rectangleArray) {
+ for (Rectangle(Point(var x1, var y1), Point p) : rectangleArray) {
+ }
+ }
+} \ No newline at end of file