aboutsummaryrefslogtreecommitdiff
path: root/test/transform
diff options
context:
space:
mode:
Diffstat (limited to 'test/transform')
-rw-r--r--test/transform/resource/after-delombok/BuilderSimpleOnRecord.java43
-rw-r--r--test/transform/resource/after-delombok/BuilderSingularOnRecord.java136
-rw-r--r--test/transform/resource/after-delombok/ConstructorsOnRecord.java2
-rw-r--r--test/transform/resource/after-delombok/DataOnRecord.java2
-rw-r--r--test/transform/resource/after-delombok/EqualsAndHashCodeOnRecord.java2
-rw-r--r--test/transform/resource/after-delombok/FieldDefaultsOnRecord.java2
-rw-r--r--test/transform/resource/after-delombok/FieldNameConstantsOnRecord.java9
-rw-r--r--test/transform/resource/after-delombok/GetterOnRecord.java2
-rw-r--r--test/transform/resource/after-delombok/LoggerConfigOnRecord.java2
-rw-r--r--test/transform/resource/after-delombok/LoggerSlf4jNonStaticOnRecord.java3
-rw-r--r--test/transform/resource/after-delombok/LoggerSlf4jOnRecord.java3
-rw-r--r--test/transform/resource/after-delombok/NonNullExistingConstructorOnRecord.java22
-rw-r--r--test/transform/resource/after-delombok/NonNullOnRecord.java22
-rw-r--r--test/transform/resource/after-delombok/SetterOnRecord.java2
-rw-r--r--test/transform/resource/after-delombok/SynchronizedInRecord.java6
-rw-r--r--test/transform/resource/after-delombok/ToStringOnRecord.java2
-rw-r--r--test/transform/resource/after-delombok/UtilityClassOnRecord.java2
-rw-r--r--test/transform/resource/after-delombok/ValueOnRecord.java2
-rw-r--r--test/transform/resource/after-delombok/WithByOnRecord.java6
-rw-r--r--test/transform/resource/after-delombok/WithOnRecord.java11
-rw-r--r--test/transform/resource/after-ecj/BuilderSimpleOnRecord.java34
-rw-r--r--test/transform/resource/after-ecj/BuilderSingularOnRecord.java128
-rw-r--r--test/transform/resource/after-ecj/ConstructorsOnRecord.java12
-rw-r--r--test/transform/resource/after-ecj/DataOnRecord.java10
-rw-r--r--test/transform/resource/after-ecj/EqualsAndHashCodeOnRecord.java10
-rw-r--r--test/transform/resource/after-ecj/FieldDefaultsOnRecord.java9
-rw-r--r--test/transform/resource/after-ecj/FieldNameConstantsOnRecord.java27
-rw-r--r--test/transform/resource/after-ecj/GetterOnRecord.java10
-rw-r--r--test/transform/resource/after-ecj/LoggerConfigOnRecord.java10
-rw-r--r--test/transform/resource/after-ecj/LoggerSlf4jOnRecord.java13
-rw-r--r--test/transform/resource/after-ecj/NonNullExistingConstructorOnRecord.java30
-rw-r--r--test/transform/resource/after-ecj/NonNullOnRecord.java30
-rw-r--r--test/transform/resource/after-ecj/SetterOnRecord.java10
-rw-r--r--test/transform/resource/after-ecj/SynchronizedInRecord.java14
-rw-r--r--test/transform/resource/after-ecj/ToStringOnRecord.java10
-rw-r--r--test/transform/resource/after-ecj/UtilityClassOnRecord.java10
-rw-r--r--test/transform/resource/after-ecj/ValueOnRecord.java10
-rw-r--r--test/transform/resource/after-ecj/WithByOnRecord.java13
-rw-r--r--test/transform/resource/after-ecj/WithOnRecord.java16
-rw-r--r--test/transform/resource/before/BuilderSimpleOnRecord.java7
-rw-r--r--test/transform/resource/before/BuilderSingularOnRecord.java11
-rw-r--r--test/transform/resource/before/ConstructorsOnRecord.java11
-rw-r--r--test/transform/resource/before/DataOnRecord.java7
-rw-r--r--test/transform/resource/before/EqualsAndHashCodeOnRecord.java7
-rw-r--r--test/transform/resource/before/FieldDefaultsOnRecord.java5
-rw-r--r--test/transform/resource/before/FieldNameConstantsOnRecord.java9
-rw-r--r--test/transform/resource/before/GetterOnRecord.java7
-rw-r--r--test/transform/resource/before/LoggerConfigOnRecord.java8
-rw-r--r--test/transform/resource/before/LoggerSlf4jOnRecord.java7
-rw-r--r--test/transform/resource/before/NonNullExistingConstructorOnRecord.java9
-rw-r--r--test/transform/resource/before/NonNullOnRecord.java9
-rw-r--r--test/transform/resource/before/SetterOnRecord.java7
-rw-r--r--test/transform/resource/before/SuperBuilderOnRecord.java8
-rw-r--r--test/transform/resource/before/SynchronizedInRecord.java10
-rw-r--r--test/transform/resource/before/ToStringOnRecord.java7
-rw-r--r--test/transform/resource/before/UtilityClassOnRecord.java7
-rw-r--r--test/transform/resource/before/ValueOnRecord.java7
-rw-r--r--test/transform/resource/before/WithByOnRecord.java6
-rw-r--r--test/transform/resource/before/WithOnRecord.java7
-rw-r--r--test/transform/resource/messages-delombok/ConstructorsOnRecord.java.messages3
-rw-r--r--test/transform/resource/messages-delombok/DataOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-delombok/EqualsAndHashCodeOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-delombok/FieldDefaultsOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-delombok/GetterOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-delombok/LoggerConfigOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-delombok/SetterOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-delombok/SuperBuilderOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-delombok/SynchronizedInRecord.java.messages1
-rw-r--r--test/transform/resource/messages-delombok/ToStringOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-delombok/UtilityClassErrors.java.messages2
-rw-r--r--test/transform/resource/messages-delombok/UtilityClassOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-delombok/ValueOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/ConstructorsOnRecord.java.messages3
-rw-r--r--test/transform/resource/messages-ecj/DataOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/EqualsAndHashCodeOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/FieldDefaultsOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/GetterOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/LoggerConfigOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/SetterOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/SuperBuilderOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/SynchronizedInRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/ToStringOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/UtilityClassErrors.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/UtilityClassOnRecord.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/ValueOnRecord.java.messages1
85 files changed, 873 insertions, 2 deletions
diff --git a/test/transform/resource/after-delombok/BuilderSimpleOnRecord.java b/test/transform/resource/after-delombok/BuilderSimpleOnRecord.java
new file mode 100644
index 00000000..03aca3aa
--- /dev/null
+++ b/test/transform/resource/after-delombok/BuilderSimpleOnRecord.java
@@ -0,0 +1,43 @@
+import java.util.List;
+
+record BuilderSimpleOnRecord<T>(List<T> l, String a) {
+ @java.lang.SuppressWarnings("all")
+ protected static class BuilderSimpleOnRecordBuilder<T> {
+ @java.lang.SuppressWarnings("all")
+ private List<T> l;
+ @java.lang.SuppressWarnings("all")
+ private String a;
+
+ @java.lang.SuppressWarnings("all")
+ BuilderSimpleOnRecordBuilder() {
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder<T> l(final List<T> l) {
+ this.l = l;
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder<T> a(final String a) {
+ this.a = a;
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSimpleOnRecord<T> build() {
+ return new BuilderSimpleOnRecord<T>(this.l, this.a);
+ }
+
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public java.lang.String toString() {
+ return "BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder(l=" + this.l + ", a=" + this.a + ")";
+ }
+ }
+
+ @java.lang.SuppressWarnings("all")
+ protected static <T> BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder<T> builder() {
+ return new BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder<T>();
+ }
+}
diff --git a/test/transform/resource/after-delombok/BuilderSingularOnRecord.java b/test/transform/resource/after-delombok/BuilderSingularOnRecord.java
new file mode 100644
index 00000000..32b37865
--- /dev/null
+++ b/test/transform/resource/after-delombok/BuilderSingularOnRecord.java
@@ -0,0 +1,136 @@
+import java.util.Collection;
+import java.util.List;
+
+record BuilderSingularOnRecord<T>(List<T> children, Collection<? extends Number> scarves, @SuppressWarnings("all") List rawList) {
+ @java.lang.SuppressWarnings("all")
+ public static class BuilderSingularOnRecordBuilder<T> {
+ @java.lang.SuppressWarnings("all")
+ private java.util.ArrayList<T> children;
+ @java.lang.SuppressWarnings("all")
+ private java.util.ArrayList<Number> scarves;
+ @java.lang.SuppressWarnings("all")
+ private java.util.ArrayList<java.lang.Object> rawList;
+
+ @java.lang.SuppressWarnings("all")
+ BuilderSingularOnRecordBuilder() {
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> child(final T child) {
+ if (this.children == null) this.children = new java.util.ArrayList<T>();
+ this.children.add(child);
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> children(final java.util.Collection<? extends T> children) {
+ if (children == null) {
+ throw new java.lang.NullPointerException("children cannot be null");
+ }
+ if (this.children == null) this.children = new java.util.ArrayList<T>();
+ this.children.addAll(children);
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> clearChildren() {
+ if (this.children != null) this.children.clear();
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> scarf(final Number scarf) {
+ if (this.scarves == null) this.scarves = new java.util.ArrayList<Number>();
+ this.scarves.add(scarf);
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> scarves(final java.util.Collection<? extends Number> scarves) {
+ if (scarves == null) {
+ throw new java.lang.NullPointerException("scarves cannot be null");
+ }
+ if (this.scarves == null) this.scarves = new java.util.ArrayList<Number>();
+ this.scarves.addAll(scarves);
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> clearScarves() {
+ if (this.scarves != null) this.scarves.clear();
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> rawList(final java.lang.Object rawList) {
+ if (this.rawList == null) this.rawList = new java.util.ArrayList<java.lang.Object>();
+ this.rawList.add(rawList);
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> rawList(final java.util.Collection<?> rawList) {
+ if (rawList == null) {
+ throw new java.lang.NullPointerException("rawList cannot be null");
+ }
+ if (this.rawList == null) this.rawList = new java.util.ArrayList<java.lang.Object>();
+ this.rawList.addAll(rawList);
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> clearRawList() {
+ if (this.rawList != null) this.rawList.clear();
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderSingularOnRecord<T> build() {
+ java.util.List<T> children;
+ switch (this.children == null ? 0 : this.children.size()) {
+ case 0:
+ children = java.util.Collections.emptyList();
+ break;
+ case 1:
+ children = java.util.Collections.singletonList(this.children.get(0));
+ break;
+ default:
+ children = java.util.Collections.unmodifiableList(new java.util.ArrayList<T>(this.children));
+ }
+ java.util.Collection<Number> scarves;
+ switch (this.scarves == null ? 0 : this.scarves.size()) {
+ case 0:
+ scarves = java.util.Collections.emptyList();
+ break;
+ case 1:
+ scarves = java.util.Collections.singletonList(this.scarves.get(0));
+ break;
+ default:
+ scarves = java.util.Collections.unmodifiableList(new java.util.ArrayList<Number>(this.scarves));
+ }
+ java.util.List<java.lang.Object> rawList;
+ switch (this.rawList == null ? 0 : this.rawList.size()) {
+ case 0:
+ rawList = java.util.Collections.emptyList();
+ break;
+ case 1:
+ rawList = java.util.Collections.singletonList(this.rawList.get(0));
+ break;
+ default:
+ rawList = java.util.Collections.unmodifiableList(new java.util.ArrayList<java.lang.Object>(this.rawList));
+ }
+ return new BuilderSingularOnRecord<T>(children, scarves, rawList);
+ }
+
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public java.lang.String toString() {
+ return "BuilderSingularOnRecord.BuilderSingularOnRecordBuilder(children=" + this.children + ", scarves=" + this.scarves + ", rawList=" + this.rawList + ")";
+ }
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public static <T> BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> builder() {
+ return new BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T>();
+ }
+}
diff --git a/test/transform/resource/after-delombok/ConstructorsOnRecord.java b/test/transform/resource/after-delombok/ConstructorsOnRecord.java
new file mode 100644
index 00000000..8cef8809
--- /dev/null
+++ b/test/transform/resource/after-delombok/ConstructorsOnRecord.java
@@ -0,0 +1,2 @@
+record ConstructorsOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-delombok/DataOnRecord.java b/test/transform/resource/after-delombok/DataOnRecord.java
new file mode 100644
index 00000000..b4384dce
--- /dev/null
+++ b/test/transform/resource/after-delombok/DataOnRecord.java
@@ -0,0 +1,2 @@
+record DataOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-delombok/EqualsAndHashCodeOnRecord.java b/test/transform/resource/after-delombok/EqualsAndHashCodeOnRecord.java
new file mode 100644
index 00000000..949cdec6
--- /dev/null
+++ b/test/transform/resource/after-delombok/EqualsAndHashCodeOnRecord.java
@@ -0,0 +1,2 @@
+record EqualsAndHashCodeOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-delombok/FieldDefaultsOnRecord.java b/test/transform/resource/after-delombok/FieldDefaultsOnRecord.java
new file mode 100644
index 00000000..1287dcb0
--- /dev/null
+++ b/test/transform/resource/after-delombok/FieldDefaultsOnRecord.java
@@ -0,0 +1,2 @@
+record FieldDefaultsOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-delombok/FieldNameConstantsOnRecord.java b/test/transform/resource/after-delombok/FieldNameConstantsOnRecord.java
new file mode 100644
index 00000000..2e3339fa
--- /dev/null
+++ b/test/transform/resource/after-delombok/FieldNameConstantsOnRecord.java
@@ -0,0 +1,9 @@
+record FieldNameConstantsOnRecord(String iAmADvdPlayer, int $skipMe, int andMe, String butPrintMePlease) {
+ static double skipMeToo;
+
+ @java.lang.SuppressWarnings("all")
+ static final class Fields {
+ public static final java.lang.String iAmADvdPlayer = "iAmADvdPlayer";
+ public static final java.lang.String butPrintMePlease = "butPrintMePlease";
+ }
+}
diff --git a/test/transform/resource/after-delombok/GetterOnRecord.java b/test/transform/resource/after-delombok/GetterOnRecord.java
new file mode 100644
index 00000000..5090e92d
--- /dev/null
+++ b/test/transform/resource/after-delombok/GetterOnRecord.java
@@ -0,0 +1,2 @@
+record GetterOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-delombok/LoggerConfigOnRecord.java b/test/transform/resource/after-delombok/LoggerConfigOnRecord.java
new file mode 100644
index 00000000..5b43f24e
--- /dev/null
+++ b/test/transform/resource/after-delombok/LoggerConfigOnRecord.java
@@ -0,0 +1,2 @@
+record LoggerConfigOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-delombok/LoggerSlf4jNonStaticOnRecord.java b/test/transform/resource/after-delombok/LoggerSlf4jNonStaticOnRecord.java
new file mode 100644
index 00000000..e59ed6d3
--- /dev/null
+++ b/test/transform/resource/after-delombok/LoggerSlf4jNonStaticOnRecord.java
@@ -0,0 +1,3 @@
+record LoggerSlf4jOnRecord(String a, String b) {
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jOnRecord.class);
+}
diff --git a/test/transform/resource/after-delombok/LoggerSlf4jOnRecord.java b/test/transform/resource/after-delombok/LoggerSlf4jOnRecord.java
new file mode 100644
index 00000000..e59ed6d3
--- /dev/null
+++ b/test/transform/resource/after-delombok/LoggerSlf4jOnRecord.java
@@ -0,0 +1,3 @@
+record LoggerSlf4jOnRecord(String a, String b) {
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jOnRecord.class);
+}
diff --git a/test/transform/resource/after-delombok/NonNullExistingConstructorOnRecord.java b/test/transform/resource/after-delombok/NonNullExistingConstructorOnRecord.java
new file mode 100644
index 00000000..de2757ee
--- /dev/null
+++ b/test/transform/resource/after-delombok/NonNullExistingConstructorOnRecord.java
@@ -0,0 +1,22 @@
+import lombok.NonNull;
+
+record NonNullOnRecord(@NonNull String a, @NonNull String b) {
+ public NonNullOnRecord(@NonNull String b) {
+ this("default", b);
+ if (b == null) {
+ throw new java.lang.NullPointerException("b is marked non-null but is null");
+ }
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public NonNullOnRecord(@NonNull final String a, @NonNull final String b) {
+ if (a == null) {
+ throw new java.lang.NullPointerException("a is marked non-null but is null");
+ }
+ if (b == null) {
+ throw new java.lang.NullPointerException("b is marked non-null but is null");
+ }
+ this.a = a;
+ this.b = b;
+ }
+}
diff --git a/test/transform/resource/after-delombok/NonNullOnRecord.java b/test/transform/resource/after-delombok/NonNullOnRecord.java
new file mode 100644
index 00000000..7147f49c
--- /dev/null
+++ b/test/transform/resource/after-delombok/NonNullOnRecord.java
@@ -0,0 +1,22 @@
+import lombok.NonNull;
+
+record NonNullOnRecord(@NonNull String a, @NonNull String b) {
+ public void method(@NonNull String param) {
+ if (param == null) {
+ throw new java.lang.NullPointerException("param is marked non-null but is null");
+ }
+ String asd = "a";
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public NonNullOnRecord(@NonNull final String a, @NonNull final String b) {
+ if (a == null) {
+ throw new java.lang.NullPointerException("a is marked non-null but is null");
+ }
+ if (b == null) {
+ throw new java.lang.NullPointerException("b is marked non-null but is null");
+ }
+ this.a = a;
+ this.b = b;
+ }
+}
diff --git a/test/transform/resource/after-delombok/SetterOnRecord.java b/test/transform/resource/after-delombok/SetterOnRecord.java
new file mode 100644
index 00000000..39a911ca
--- /dev/null
+++ b/test/transform/resource/after-delombok/SetterOnRecord.java
@@ -0,0 +1,2 @@
+record SetterOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-delombok/SynchronizedInRecord.java b/test/transform/resource/after-delombok/SynchronizedInRecord.java
new file mode 100644
index 00000000..67ca868a
--- /dev/null
+++ b/test/transform/resource/after-delombok/SynchronizedInRecord.java
@@ -0,0 +1,6 @@
+// version 14:
+record SynchronizedInRecord(String a, String b) {
+ public void foo() {
+ String foo = "bar";
+ }
+}
diff --git a/test/transform/resource/after-delombok/ToStringOnRecord.java b/test/transform/resource/after-delombok/ToStringOnRecord.java
new file mode 100644
index 00000000..84db33be
--- /dev/null
+++ b/test/transform/resource/after-delombok/ToStringOnRecord.java
@@ -0,0 +1,2 @@
+record ToStringOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-delombok/UtilityClassOnRecord.java b/test/transform/resource/after-delombok/UtilityClassOnRecord.java
new file mode 100644
index 00000000..fbe27370
--- /dev/null
+++ b/test/transform/resource/after-delombok/UtilityClassOnRecord.java
@@ -0,0 +1,2 @@
+record UtilityClassOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-delombok/ValueOnRecord.java b/test/transform/resource/after-delombok/ValueOnRecord.java
new file mode 100644
index 00000000..d3d0e6db
--- /dev/null
+++ b/test/transform/resource/after-delombok/ValueOnRecord.java
@@ -0,0 +1,2 @@
+record ValueOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-delombok/WithByOnRecord.java b/test/transform/resource/after-delombok/WithByOnRecord.java
new file mode 100644
index 00000000..43a4c8c3
--- /dev/null
+++ b/test/transform/resource/after-delombok/WithByOnRecord.java
@@ -0,0 +1,6 @@
+record WithByOnRecord(String a, String b) {
+ @java.lang.SuppressWarnings("all")
+ public WithByOnRecord withABy(final java.util.function.Function<? super String, ? extends String> transformer) {
+ return new WithByOnRecord(transformer.apply(this.a), this.b);
+ }
+}
diff --git a/test/transform/resource/after-delombok/WithOnRecord.java b/test/transform/resource/after-delombok/WithOnRecord.java
new file mode 100644
index 00000000..bfb123bc
--- /dev/null
+++ b/test/transform/resource/after-delombok/WithOnRecord.java
@@ -0,0 +1,11 @@
+record WithOnRecord(String a, String b) {
+ @java.lang.SuppressWarnings("all")
+ public WithOnRecord withA(final String a) {
+ return this.a == a ? this : new WithOnRecord(a, this.b);
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public WithOnRecord withB(final String b) {
+ return this.b == b ? this : new WithOnRecord(this.a, b);
+ }
+}
diff --git a/test/transform/resource/after-ecj/BuilderSimpleOnRecord.java b/test/transform/resource/after-ecj/BuilderSimpleOnRecord.java
new file mode 100644
index 00000000..e73ed92e
--- /dev/null
+++ b/test/transform/resource/after-ecj/BuilderSimpleOnRecord.java
@@ -0,0 +1,34 @@
+import java.util.List;
+@lombok.Builder(access = lombok.AccessLevel.PROTECTED) record BuilderSimpleOnRecord(List l, String a)<T> {
+ protected static @java.lang.SuppressWarnings("all") class BuilderSimpleOnRecordBuilder<T> {
+ private @java.lang.SuppressWarnings("all") List<T> l;
+ private @java.lang.SuppressWarnings("all") String a;
+ @java.lang.SuppressWarnings("all") BuilderSimpleOnRecordBuilder() {
+ super();
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder<T> l(final List<T> l) {
+ this.l = l;
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder<T> a(final String a) {
+ this.a = a;
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSimpleOnRecord<T> build() {
+ return new BuilderSimpleOnRecord<T>(this.l, this.a);
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
+ return (((("BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder(l=" + this.l) + ", a=") + this.a) + ")");
+ }
+ }
+/* Implicit */ private final List<T> l;
+/* Implicit */ private final String a;
+ public BuilderSimpleOnRecord(List<T> l, String a) {
+ super();
+ .l = l;
+ .a = a;
+ }
+ protected static @java.lang.SuppressWarnings("all") <T>BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder<T> builder() {
+ return new BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder<T>();
+ }
+}
diff --git a/test/transform/resource/after-ecj/BuilderSingularOnRecord.java b/test/transform/resource/after-ecj/BuilderSingularOnRecord.java
new file mode 100644
index 00000000..b1d9cf39
--- /dev/null
+++ b/test/transform/resource/after-ecj/BuilderSingularOnRecord.java
@@ -0,0 +1,128 @@
+import java.util.Collection;
+import java.util.List;
+import lombok.Builder;
+import lombok.Singular;
+@Builder record BuilderSingularOnRecord(List children, Collection scarves, List rawList)<T> {
+ public static @java.lang.SuppressWarnings("all") class BuilderSingularOnRecordBuilder<T> {
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<T> children;
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<Number> scarves;
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<java.lang.Object> rawList;
+ @java.lang.SuppressWarnings("all") BuilderSingularOnRecordBuilder() {
+ super();
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> child(final T child) {
+ if ((this.children == null))
+ this.children = new java.util.ArrayList<T>();
+ this.children.add(child);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> children(final java.util.Collection<? extends T> children) {
+ if ((children == null))
+ {
+ throw new java.lang.NullPointerException("children cannot be null");
+ }
+ if ((this.children == null))
+ this.children = new java.util.ArrayList<T>();
+ this.children.addAll(children);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> clearChildren() {
+ if ((this.children != null))
+ this.children.clear();
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> scarf(final Number scarf) {
+ if ((this.scarves == null))
+ this.scarves = new java.util.ArrayList<Number>();
+ this.scarves.add(scarf);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> scarves(final java.util.Collection<? extends Number> scarves) {
+ if ((scarves == null))
+ {
+ throw new java.lang.NullPointerException("scarves cannot be null");
+ }
+ if ((this.scarves == null))
+ this.scarves = new java.util.ArrayList<Number>();
+ this.scarves.addAll(scarves);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> clearScarves() {
+ if ((this.scarves != null))
+ this.scarves.clear();
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> rawList(final java.lang.Object rawList) {
+ if ((this.rawList == null))
+ this.rawList = new java.util.ArrayList<java.lang.Object>();
+ this.rawList.add(rawList);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> rawList(final java.util.Collection<?> rawList) {
+ if ((rawList == null))
+ {
+ throw new java.lang.NullPointerException("rawList cannot be null");
+ }
+ if ((this.rawList == null))
+ this.rawList = new java.util.ArrayList<java.lang.Object>();
+ this.rawList.addAll(rawList);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> clearRawList() {
+ if ((this.rawList != null))
+ this.rawList.clear();
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord<T> build() {
+ java.util.List<T> children;
+ switch (((this.children == null) ? 0 : this.children.size())) {
+ case 0 :
+ children = java.util.Collections.emptyList();
+ break;
+ case 1 :
+ children = java.util.Collections.singletonList(this.children.get(0));
+ break;
+ default :
+ children = java.util.Collections.unmodifiableList(new java.util.ArrayList<T>(this.children));
+ }
+ java.util.Collection<Number> scarves;
+ switch (((this.scarves == null) ? 0 : this.scarves.size())) {
+ case 0 :
+ scarves = java.util.Collections.emptyList();
+ break;
+ case 1 :
+ scarves = java.util.Collections.singletonList(this.scarves.get(0));
+ break;
+ default :
+ scarves = java.util.Collections.unmodifiableList(new java.util.ArrayList<Number>(this.scarves));
+ }
+ java.util.List<java.lang.Object> rawList;
+ switch (((this.rawList == null) ? 0 : this.rawList.size())) {
+ case 0 :
+ rawList = java.util.Collections.emptyList();
+ break;
+ case 1 :
+ rawList = java.util.Collections.singletonList(this.rawList.get(0));
+ break;
+ default :
+ rawList = java.util.Collections.unmodifiableList(new java.util.ArrayList<java.lang.Object>(this.rawList));
+ }
+ return new BuilderSingularOnRecord<T>(children, scarves, rawList);
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
+ return (((((("BuilderSingularOnRecord.BuilderSingularOnRecordBuilder(children=" + this.children) + ", scarves=") + this.scarves) + ", rawList=") + this.rawList) + ")");
+ }
+ }
+/* Implicit */ private final List<T> children;
+/* Implicit */ private final Collection<? extends Number> scarves;
+/* Implicit */ private final List rawList;
+ public BuilderSingularOnRecord(@Singular List<T> children, @Singular Collection<? extends Number> scarves, @SuppressWarnings("all") @Singular("rawList") List rawList) {
+ super();
+ .children = children;
+ .scarves = scarves;
+ .rawList = rawList;
+ }
+ public static @java.lang.SuppressWarnings("all") <T>BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T> builder() {
+ return new BuilderSingularOnRecord.BuilderSingularOnRecordBuilder<T>();
+ }
+}
diff --git a/test/transform/resource/after-ecj/ConstructorsOnRecord.java b/test/transform/resource/after-ecj/ConstructorsOnRecord.java
new file mode 100644
index 00000000..bfd9618f
--- /dev/null
+++ b/test/transform/resource/after-ecj/ConstructorsOnRecord.java
@@ -0,0 +1,12 @@
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.RequiredArgsConstructor;
+@AllArgsConstructor @RequiredArgsConstructor @NoArgsConstructor record ConstructorsOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public ConstructorsOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/DataOnRecord.java b/test/transform/resource/after-ecj/DataOnRecord.java
new file mode 100644
index 00000000..48783330
--- /dev/null
+++ b/test/transform/resource/after-ecj/DataOnRecord.java
@@ -0,0 +1,10 @@
+import lombok.Data;
+@Data record DataOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public DataOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/EqualsAndHashCodeOnRecord.java b/test/transform/resource/after-ecj/EqualsAndHashCodeOnRecord.java
new file mode 100644
index 00000000..60285186
--- /dev/null
+++ b/test/transform/resource/after-ecj/EqualsAndHashCodeOnRecord.java
@@ -0,0 +1,10 @@
+import lombok.EqualsAndHashCode;
+@EqualsAndHashCode record EqualsAndHashCodeOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public EqualsAndHashCodeOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/FieldDefaultsOnRecord.java b/test/transform/resource/after-ecj/FieldDefaultsOnRecord.java
new file mode 100644
index 00000000..95c49a42
--- /dev/null
+++ b/test/transform/resource/after-ecj/FieldDefaultsOnRecord.java
@@ -0,0 +1,9 @@
+@lombok.experimental.FieldDefaults(makeFinal = true) record FieldDefaultsOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public FieldDefaultsOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/FieldNameConstantsOnRecord.java b/test/transform/resource/after-ecj/FieldNameConstantsOnRecord.java
new file mode 100644
index 00000000..b25fd6b3
--- /dev/null
+++ b/test/transform/resource/after-ecj/FieldNameConstantsOnRecord.java
@@ -0,0 +1,27 @@
+import lombok.experimental.FieldNameConstants;
+import lombok.AccessLevel;
+@FieldNameConstants(level = AccessLevel.PACKAGE) record FieldNameConstantsOnRecord(String iAmADvdPlayer, int $skipMe, int andMe, String butPrintMePlease) {
+ static final @java.lang.SuppressWarnings("all") class Fields {
+ public static final java.lang.String iAmADvdPlayer = "iAmADvdPlayer";
+ public static final java.lang.String butPrintMePlease = "butPrintMePlease";
+ <clinit>() {
+ }
+ private @java.lang.SuppressWarnings("all") Fields() {
+ super();
+ }
+ }
+/* Implicit */ private final String iAmADvdPlayer;
+/* Implicit */ private final int $skipMe;
+/* Implicit */ private final int andMe;
+/* Implicit */ private final String butPrintMePlease;
+ static double skipMeToo;
+ <clinit>() {
+ }
+ public FieldNameConstantsOnRecord(String iAmADvdPlayer, int $skipMe, int andMe, String butPrintMePlease) {
+ super();
+ .iAmADvdPlayer = iAmADvdPlayer;
+ .$skipMe = $skipMe;
+ .andMe = andMe;
+ .butPrintMePlease = butPrintMePlease;
+ }
+}
diff --git a/test/transform/resource/after-ecj/GetterOnRecord.java b/test/transform/resource/after-ecj/GetterOnRecord.java
new file mode 100644
index 00000000..2cb61dba
--- /dev/null
+++ b/test/transform/resource/after-ecj/GetterOnRecord.java
@@ -0,0 +1,10 @@
+import lombok.Getter;
+@Getter record GetterOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public GetterOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/LoggerConfigOnRecord.java b/test/transform/resource/after-ecj/LoggerConfigOnRecord.java
new file mode 100644
index 00000000..ca572860
--- /dev/null
+++ b/test/transform/resource/after-ecj/LoggerConfigOnRecord.java
@@ -0,0 +1,10 @@
+import lombok.extern.slf4j.Slf4j;
+@Slf4j record LoggerConfigOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public LoggerConfigOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/LoggerSlf4jOnRecord.java b/test/transform/resource/after-ecj/LoggerSlf4jOnRecord.java
new file mode 100644
index 00000000..804c8582
--- /dev/null
+++ b/test/transform/resource/after-ecj/LoggerSlf4jOnRecord.java
@@ -0,0 +1,13 @@
+import lombok.extern.slf4j.Slf4j;
+@Slf4j record LoggerSlf4jOnRecord(org log, String a) {
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jOnRecord.class);
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ <clinit>() {
+ }
+ public LoggerSlf4jOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/NonNullExistingConstructorOnRecord.java b/test/transform/resource/after-ecj/NonNullExistingConstructorOnRecord.java
new file mode 100644
index 00000000..82bc6ffd
--- /dev/null
+++ b/test/transform/resource/after-ecj/NonNullExistingConstructorOnRecord.java
@@ -0,0 +1,30 @@
+import lombok.NonNull;
+record NonNullOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public NonNullOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+ public NonNullOnRecord(@NonNull String b) {
+ this("default", b);
+ if ((b == null))
+ {
+ throw new java.lang.NullPointerException("b is marked non-null but is null");
+ }
+ }
+ public @java.lang.SuppressWarnings("all") NonNullOnRecord(final String a, final String b) {
+ super();
+ if ((a == null))
+ {
+ throw new java.lang.NullPointerException("a is marked non-null but is null");
+ }
+ if ((b == null))
+ {
+ throw new java.lang.NullPointerException("b is marked non-null but is null");
+ }
+ this.a = a;
+ this.b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/NonNullOnRecord.java b/test/transform/resource/after-ecj/NonNullOnRecord.java
new file mode 100644
index 00000000..7d71d9cc
--- /dev/null
+++ b/test/transform/resource/after-ecj/NonNullOnRecord.java
@@ -0,0 +1,30 @@
+import lombok.NonNull;
+record NonNullOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public NonNullOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+ public void method(@NonNull String param) {
+ if ((param == null))
+ {
+ throw new java.lang.NullPointerException("param is marked non-null but is null");
+ }
+ String asd = "a";
+ }
+ public @java.lang.SuppressWarnings("all") NonNullOnRecord(final String a, final String b) {
+ super();
+ if ((a == null))
+ {
+ throw new java.lang.NullPointerException("a is marked non-null but is null");
+ }
+ if ((b == null))
+ {
+ throw new java.lang.NullPointerException("b is marked non-null but is null");
+ }
+ this.a = a;
+ this.b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/SetterOnRecord.java b/test/transform/resource/after-ecj/SetterOnRecord.java
new file mode 100644
index 00000000..c9d3764f
--- /dev/null
+++ b/test/transform/resource/after-ecj/SetterOnRecord.java
@@ -0,0 +1,10 @@
+import lombok.Setter;
+@Setter record SetterOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public SetterOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/SynchronizedInRecord.java b/test/transform/resource/after-ecj/SynchronizedInRecord.java
new file mode 100644
index 00000000..f90a85e2
--- /dev/null
+++ b/test/transform/resource/after-ecj/SynchronizedInRecord.java
@@ -0,0 +1,14 @@
+import lombok.Synchronized;
+record SynchronizedInRecord(java $lock, String a) {
+ private final java.lang.Object $lock = new java.lang.Object[0];
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public SynchronizedInRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+ public @Synchronized void foo() {
+ String foo = "bar";
+ }
+}
diff --git a/test/transform/resource/after-ecj/ToStringOnRecord.java b/test/transform/resource/after-ecj/ToStringOnRecord.java
new file mode 100644
index 00000000..8decb8d1
--- /dev/null
+++ b/test/transform/resource/after-ecj/ToStringOnRecord.java
@@ -0,0 +1,10 @@
+import lombok.ToString;
+@ToString record ToStringOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public ToStringOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/UtilityClassOnRecord.java b/test/transform/resource/after-ecj/UtilityClassOnRecord.java
new file mode 100644
index 00000000..036c0f86
--- /dev/null
+++ b/test/transform/resource/after-ecj/UtilityClassOnRecord.java
@@ -0,0 +1,10 @@
+import lombok.experimental.UtilityClass;
+@UtilityClass record UtilityClassOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public UtilityClassOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/ValueOnRecord.java b/test/transform/resource/after-ecj/ValueOnRecord.java
new file mode 100644
index 00000000..5b505c76
--- /dev/null
+++ b/test/transform/resource/after-ecj/ValueOnRecord.java
@@ -0,0 +1,10 @@
+import lombok.Value;
+@Value record ValueOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public ValueOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+}
diff --git a/test/transform/resource/after-ecj/WithByOnRecord.java b/test/transform/resource/after-ecj/WithByOnRecord.java
new file mode 100644
index 00000000..9048c9f4
--- /dev/null
+++ b/test/transform/resource/after-ecj/WithByOnRecord.java
@@ -0,0 +1,13 @@
+import lombok.experimental.WithBy;
+record WithByOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public WithByOnRecord( String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+ public @java.lang.SuppressWarnings("all") WithByOnRecord withABy(final java.util.function.Function<? super String, ? extends String> transformer) {
+ return new WithByOnRecord(transformer.apply(this.a), this.b);
+ }
+}
diff --git a/test/transform/resource/after-ecj/WithOnRecord.java b/test/transform/resource/after-ecj/WithOnRecord.java
new file mode 100644
index 00000000..5ab8d6ac
--- /dev/null
+++ b/test/transform/resource/after-ecj/WithOnRecord.java
@@ -0,0 +1,16 @@
+import lombok.With;
+@With record WithOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public WithOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+ public @java.lang.SuppressWarnings("all") WithOnRecord withA(final String a) {
+ return ((this.a == a) ? this : new WithOnRecord(a, this.b));
+ }
+ public @java.lang.SuppressWarnings("all") WithOnRecord withB(final String b) {
+ return ((this.b == b) ? this : new WithOnRecord(this.a, b));
+ }
+}
diff --git a/test/transform/resource/before/BuilderSimpleOnRecord.java b/test/transform/resource/before/BuilderSimpleOnRecord.java
new file mode 100644
index 00000000..7968db64
--- /dev/null
+++ b/test/transform/resource/before/BuilderSimpleOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+
+import java.util.List;
+
+@lombok.Builder(access = lombok.AccessLevel.PROTECTED)
+record BuilderSimpleOnRecord<T>(List<T> l, String a) {
+}
diff --git a/test/transform/resource/before/BuilderSingularOnRecord.java b/test/transform/resource/before/BuilderSingularOnRecord.java
new file mode 100644
index 00000000..0ffd80be
--- /dev/null
+++ b/test/transform/resource/before/BuilderSingularOnRecord.java
@@ -0,0 +1,11 @@
+// version 14:
+
+import java.util.Collection;
+import java.util.List;
+
+import lombok.Builder;
+import lombok.Singular;
+
+@Builder
+record BuilderSingularOnRecord<T>(@Singular List<T> children, @Singular Collection<? extends Number> scarves, @SuppressWarnings("all") @Singular("rawList") List rawList) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/ConstructorsOnRecord.java b/test/transform/resource/before/ConstructorsOnRecord.java
new file mode 100644
index 00000000..d45495c8
--- /dev/null
+++ b/test/transform/resource/before/ConstructorsOnRecord.java
@@ -0,0 +1,11 @@
+// version 14:
+
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.RequiredArgsConstructor;
+
+@AllArgsConstructor
+@RequiredArgsConstructor
+@NoArgsConstructor
+record ConstructorsOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/DataOnRecord.java b/test/transform/resource/before/DataOnRecord.java
new file mode 100644
index 00000000..ed32c337
--- /dev/null
+++ b/test/transform/resource/before/DataOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+
+import lombok.Data;
+
+@Data
+record DataOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/EqualsAndHashCodeOnRecord.java b/test/transform/resource/before/EqualsAndHashCodeOnRecord.java
new file mode 100644
index 00000000..5c295b3d
--- /dev/null
+++ b/test/transform/resource/before/EqualsAndHashCodeOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode
+record EqualsAndHashCodeOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/FieldDefaultsOnRecord.java b/test/transform/resource/before/FieldDefaultsOnRecord.java
new file mode 100644
index 00000000..cf74508d
--- /dev/null
+++ b/test/transform/resource/before/FieldDefaultsOnRecord.java
@@ -0,0 +1,5 @@
+// version 14:
+
+@lombok.experimental.FieldDefaults(makeFinal = true)
+record FieldDefaultsOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/FieldNameConstantsOnRecord.java b/test/transform/resource/before/FieldNameConstantsOnRecord.java
new file mode 100644
index 00000000..0905e082
--- /dev/null
+++ b/test/transform/resource/before/FieldNameConstantsOnRecord.java
@@ -0,0 +1,9 @@
+// version 14:
+
+import lombok.experimental.FieldNameConstants;
+import lombok.AccessLevel;
+
+@FieldNameConstants(level = AccessLevel.PACKAGE)
+record FieldNameConstantsOnRecord(String iAmADvdPlayer, int $skipMe, @FieldNameConstants.Exclude int andMe, String butPrintMePlease) {
+ static double skipMeToo;
+} \ No newline at end of file
diff --git a/test/transform/resource/before/GetterOnRecord.java b/test/transform/resource/before/GetterOnRecord.java
new file mode 100644
index 00000000..5a56a6d4
--- /dev/null
+++ b/test/transform/resource/before/GetterOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+
+import lombok.Getter;
+
+@Getter
+record GetterOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/LoggerConfigOnRecord.java b/test/transform/resource/before/LoggerConfigOnRecord.java
new file mode 100644
index 00000000..c5f5a05a
--- /dev/null
+++ b/test/transform/resource/before/LoggerConfigOnRecord.java
@@ -0,0 +1,8 @@
+// CONF: lombok.log.fieldIsStatic = false
+// version 14:
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+record LoggerConfigOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/LoggerSlf4jOnRecord.java b/test/transform/resource/before/LoggerSlf4jOnRecord.java
new file mode 100644
index 00000000..f3402742
--- /dev/null
+++ b/test/transform/resource/before/LoggerSlf4jOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+record LoggerSlf4jOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/NonNullExistingConstructorOnRecord.java b/test/transform/resource/before/NonNullExistingConstructorOnRecord.java
new file mode 100644
index 00000000..1faf7d69
--- /dev/null
+++ b/test/transform/resource/before/NonNullExistingConstructorOnRecord.java
@@ -0,0 +1,9 @@
+// version 14:
+
+import lombok.NonNull;
+
+record NonNullOnRecord(@NonNull String a, @NonNull String b) {
+ public NonNullOnRecord(@NonNull String b) {
+ this("default", b);
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/before/NonNullOnRecord.java b/test/transform/resource/before/NonNullOnRecord.java
new file mode 100644
index 00000000..223f8cbb
--- /dev/null
+++ b/test/transform/resource/before/NonNullOnRecord.java
@@ -0,0 +1,9 @@
+// version 14:
+
+import lombok.NonNull;
+
+record NonNullOnRecord(@NonNull String a, @NonNull String b) {
+ public void method(@NonNull String param) {
+ String asd = "a";
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/before/SetterOnRecord.java b/test/transform/resource/before/SetterOnRecord.java
new file mode 100644
index 00000000..c91e06cd
--- /dev/null
+++ b/test/transform/resource/before/SetterOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+
+import lombok.Setter;
+
+@Setter
+record SetterOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/SuperBuilderOnRecord.java b/test/transform/resource/before/SuperBuilderOnRecord.java
new file mode 100644
index 00000000..8925176e
--- /dev/null
+++ b/test/transform/resource/before/SuperBuilderOnRecord.java
@@ -0,0 +1,8 @@
+// skip compare content
+// version 14:
+
+import lombok.experimental.SuperBuilder;
+
+@SuperBuilder
+record SupeBuilderOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/SynchronizedInRecord.java b/test/transform/resource/before/SynchronizedInRecord.java
new file mode 100644
index 00000000..99f87543
--- /dev/null
+++ b/test/transform/resource/before/SynchronizedInRecord.java
@@ -0,0 +1,10 @@
+// version 14:
+
+import lombok.Synchronized;
+
+record SynchronizedInRecord(String a, String b) {
+ @Synchronized
+ public void foo() {
+ String foo = "bar";
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/before/ToStringOnRecord.java b/test/transform/resource/before/ToStringOnRecord.java
new file mode 100644
index 00000000..279c6f6c
--- /dev/null
+++ b/test/transform/resource/before/ToStringOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+
+import lombok.ToString;
+
+@ToString
+record ToStringOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/UtilityClassOnRecord.java b/test/transform/resource/before/UtilityClassOnRecord.java
new file mode 100644
index 00000000..1e3ebb38
--- /dev/null
+++ b/test/transform/resource/before/UtilityClassOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+
+import lombok.experimental.UtilityClass;
+
+@UtilityClass
+record UtilityClassOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/ValueOnRecord.java b/test/transform/resource/before/ValueOnRecord.java
new file mode 100644
index 00000000..e1e49595
--- /dev/null
+++ b/test/transform/resource/before/ValueOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+
+import lombok.Value;
+
+@Value
+record ValueOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/WithByOnRecord.java b/test/transform/resource/before/WithByOnRecord.java
new file mode 100644
index 00000000..98cbff9b
--- /dev/null
+++ b/test/transform/resource/before/WithByOnRecord.java
@@ -0,0 +1,6 @@
+// version 14:
+
+import lombok.experimental.WithBy;
+
+record WithByOnRecord(@WithBy String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/WithOnRecord.java b/test/transform/resource/before/WithOnRecord.java
new file mode 100644
index 00000000..211da3c8
--- /dev/null
+++ b/test/transform/resource/before/WithOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+
+import lombok.With;
+
+@With
+record WithOnRecord(String a, String b) {
+} \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/ConstructorsOnRecord.java.messages b/test/transform/resource/messages-delombok/ConstructorsOnRecord.java.messages
new file mode 100644
index 00000000..d1732a8c
--- /dev/null
+++ b/test/transform/resource/messages-delombok/ConstructorsOnRecord.java.messages
@@ -0,0 +1,3 @@
+7 AllArgsConstructor is only supported on a class or an enum.
+8 RequiredArgsConstructor is only supported on a class or an enum.
+9 NoArgsConstructor is only supported on a class or an enum.
diff --git a/test/transform/resource/messages-delombok/DataOnRecord.java.messages b/test/transform/resource/messages-delombok/DataOnRecord.java.messages
new file mode 100644
index 00000000..42a9625b
--- /dev/null
+++ b/test/transform/resource/messages-delombok/DataOnRecord.java.messages
@@ -0,0 +1 @@
+5 @Data is only supported on a class.
diff --git a/test/transform/resource/messages-delombok/EqualsAndHashCodeOnRecord.java.messages b/test/transform/resource/messages-delombok/EqualsAndHashCodeOnRecord.java.messages
new file mode 100644
index 00000000..daa53bcd
--- /dev/null
+++ b/test/transform/resource/messages-delombok/EqualsAndHashCodeOnRecord.java.messages
@@ -0,0 +1 @@
+5 @EqualsAndHashCode is only supported on a class.
diff --git a/test/transform/resource/messages-delombok/FieldDefaultsOnRecord.java.messages b/test/transform/resource/messages-delombok/FieldDefaultsOnRecord.java.messages
new file mode 100644
index 00000000..1afb1bdf
--- /dev/null
+++ b/test/transform/resource/messages-delombok/FieldDefaultsOnRecord.java.messages
@@ -0,0 +1 @@
+3 @FieldDefaults is only supported on a class or an enum.
diff --git a/test/transform/resource/messages-delombok/GetterOnRecord.java.messages b/test/transform/resource/messages-delombok/GetterOnRecord.java.messages
new file mode 100644
index 00000000..0830c585
--- /dev/null
+++ b/test/transform/resource/messages-delombok/GetterOnRecord.java.messages
@@ -0,0 +1 @@
+5 @Getter is only supported on a class, an enum, or a field.
diff --git a/test/transform/resource/messages-delombok/LoggerConfigOnRecord.java.messages b/test/transform/resource/messages-delombok/LoggerConfigOnRecord.java.messages
new file mode 100644
index 00000000..7dd3294e
--- /dev/null
+++ b/test/transform/resource/messages-delombok/LoggerConfigOnRecord.java.messages
@@ -0,0 +1 @@
+6 Logger fields must be static in records.
diff --git a/test/transform/resource/messages-delombok/SetterOnRecord.java.messages b/test/transform/resource/messages-delombok/SetterOnRecord.java.messages
new file mode 100644
index 00000000..1913765c
--- /dev/null
+++ b/test/transform/resource/messages-delombok/SetterOnRecord.java.messages
@@ -0,0 +1 @@
+5 @Setter is only supported on a class or a field.
diff --git a/test/transform/resource/messages-delombok/SuperBuilderOnRecord.java.messages b/test/transform/resource/messages-delombok/SuperBuilderOnRecord.java.messages
new file mode 100644
index 00000000..25b474ab
--- /dev/null
+++ b/test/transform/resource/messages-delombok/SuperBuilderOnRecord.java.messages
@@ -0,0 +1 @@
+6 @SuperBuilder is only supported on types.
diff --git a/test/transform/resource/messages-delombok/SynchronizedInRecord.java.messages b/test/transform/resource/messages-delombok/SynchronizedInRecord.java.messages
new file mode 100644
index 00000000..d40e68b3
--- /dev/null
+++ b/test/transform/resource/messages-delombok/SynchronizedInRecord.java.messages
@@ -0,0 +1 @@
+5 @Synchronized is legal only on methods in classes and enums.
diff --git a/test/transform/resource/messages-delombok/ToStringOnRecord.java.messages b/test/transform/resource/messages-delombok/ToStringOnRecord.java.messages
new file mode 100644
index 00000000..0299664b
--- /dev/null
+++ b/test/transform/resource/messages-delombok/ToStringOnRecord.java.messages
@@ -0,0 +1 @@
+5 @ToString is only supported on a class or enum.
diff --git a/test/transform/resource/messages-delombok/UtilityClassErrors.java.messages b/test/transform/resource/messages-delombok/UtilityClassErrors.java.messages
index 4afa12ec..0ff5b231 100644
--- a/test/transform/resource/messages-delombok/UtilityClassErrors.java.messages
+++ b/test/transform/resource/messages-delombok/UtilityClassErrors.java.messages
@@ -1,4 +1,4 @@
4 @UtilityClasses cannot have declared constructors.
7 @UtilityClass cannot be placed on a method local or anonymous inner class, or any class nested in such a class.
-12 @UtilityClass is only supported on a class (can't be an interface, enum, or annotation).
+12 @UtilityClass is only supported on a class (can't be an interface, enum, annotation, or record).
17 @UtilityClass automatically makes the class static, however, this class cannot be made static. \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/UtilityClassOnRecord.java.messages b/test/transform/resource/messages-delombok/UtilityClassOnRecord.java.messages
new file mode 100644
index 00000000..9de73ebd
--- /dev/null
+++ b/test/transform/resource/messages-delombok/UtilityClassOnRecord.java.messages
@@ -0,0 +1 @@
+5 @UtilityClass is only supported on a class (can't be an interface, enum, annotation, or record).
diff --git a/test/transform/resource/messages-delombok/ValueOnRecord.java.messages b/test/transform/resource/messages-delombok/ValueOnRecord.java.messages
new file mode 100644
index 00000000..ebb71090
--- /dev/null
+++ b/test/transform/resource/messages-delombok/ValueOnRecord.java.messages
@@ -0,0 +1 @@
+5 @Value is only supported on a class.
diff --git a/test/transform/resource/messages-ecj/ConstructorsOnRecord.java.messages b/test/transform/resource/messages-ecj/ConstructorsOnRecord.java.messages
new file mode 100644
index 00000000..d1732a8c
--- /dev/null
+++ b/test/transform/resource/messages-ecj/ConstructorsOnRecord.java.messages
@@ -0,0 +1,3 @@
+7 AllArgsConstructor is only supported on a class or an enum.
+8 RequiredArgsConstructor is only supported on a class or an enum.
+9 NoArgsConstructor is only supported on a class or an enum.
diff --git a/test/transform/resource/messages-ecj/DataOnRecord.java.messages b/test/transform/resource/messages-ecj/DataOnRecord.java.messages
new file mode 100644
index 00000000..42a9625b
--- /dev/null
+++ b/test/transform/resource/messages-ecj/DataOnRecord.java.messages
@@ -0,0 +1 @@
+5 @Data is only supported on a class.
diff --git a/test/transform/resource/messages-ecj/EqualsAndHashCodeOnRecord.java.messages b/test/transform/resource/messages-ecj/EqualsAndHashCodeOnRecord.java.messages
new file mode 100644
index 00000000..daa53bcd
--- /dev/null
+++ b/test/transform/resource/messages-ecj/EqualsAndHashCodeOnRecord.java.messages
@@ -0,0 +1 @@
+5 @EqualsAndHashCode is only supported on a class.
diff --git a/test/transform/resource/messages-ecj/FieldDefaultsOnRecord.java.messages b/test/transform/resource/messages-ecj/FieldDefaultsOnRecord.java.messages
new file mode 100644
index 00000000..1afb1bdf
--- /dev/null
+++ b/test/transform/resource/messages-ecj/FieldDefaultsOnRecord.java.messages
@@ -0,0 +1 @@
+3 @FieldDefaults is only supported on a class or an enum.
diff --git a/test/transform/resource/messages-ecj/GetterOnRecord.java.messages b/test/transform/resource/messages-ecj/GetterOnRecord.java.messages
new file mode 100644
index 00000000..0830c585
--- /dev/null
+++ b/test/transform/resource/messages-ecj/GetterOnRecord.java.messages
@@ -0,0 +1 @@
+5 @Getter is only supported on a class, an enum, or a field.
diff --git a/test/transform/resource/messages-ecj/LoggerConfigOnRecord.java.messages b/test/transform/resource/messages-ecj/LoggerConfigOnRecord.java.messages
new file mode 100644
index 00000000..7dd3294e
--- /dev/null
+++ b/test/transform/resource/messages-ecj/LoggerConfigOnRecord.java.messages
@@ -0,0 +1 @@
+6 Logger fields must be static in records.
diff --git a/test/transform/resource/messages-ecj/SetterOnRecord.java.messages b/test/transform/resource/messages-ecj/SetterOnRecord.java.messages
new file mode 100644
index 00000000..1913765c
--- /dev/null
+++ b/test/transform/resource/messages-ecj/SetterOnRecord.java.messages
@@ -0,0 +1 @@
+5 @Setter is only supported on a class or a field.
diff --git a/test/transform/resource/messages-ecj/SuperBuilderOnRecord.java.messages b/test/transform/resource/messages-ecj/SuperBuilderOnRecord.java.messages
new file mode 100644
index 00000000..25b474ab
--- /dev/null
+++ b/test/transform/resource/messages-ecj/SuperBuilderOnRecord.java.messages
@@ -0,0 +1 @@
+6 @SuperBuilder is only supported on types.
diff --git a/test/transform/resource/messages-ecj/SynchronizedInRecord.java.messages b/test/transform/resource/messages-ecj/SynchronizedInRecord.java.messages
new file mode 100644
index 00000000..af4b11f8
--- /dev/null
+++ b/test/transform/resource/messages-ecj/SynchronizedInRecord.java.messages
@@ -0,0 +1 @@
+6 @Synchronized is legal only on methods in classes and enums.
diff --git a/test/transform/resource/messages-ecj/ToStringOnRecord.java.messages b/test/transform/resource/messages-ecj/ToStringOnRecord.java.messages
new file mode 100644
index 00000000..0299664b
--- /dev/null
+++ b/test/transform/resource/messages-ecj/ToStringOnRecord.java.messages
@@ -0,0 +1 @@
+5 @ToString is only supported on a class or enum.
diff --git a/test/transform/resource/messages-ecj/UtilityClassErrors.java.messages b/test/transform/resource/messages-ecj/UtilityClassErrors.java.messages
index 15c9b10f..6995eb65 100644
--- a/test/transform/resource/messages-ecj/UtilityClassErrors.java.messages
+++ b/test/transform/resource/messages-ecj/UtilityClassErrors.java.messages
@@ -1,4 +1,4 @@
4 @UtilityClasses cannot have declared constructors.
7 @UtilityClass cannot be placed on a method local or anonymous inner class, or any class nested in such a class.
-12 @UtilityClass is only supported on a class (can't be an interface, enum, or annotation)
+12 @UtilityClass is only supported on a class (can't be an interface, enum, annotation, or record)
17 @UtilityClass automatically makes the class static, however, this class cannot be made static. \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/UtilityClassOnRecord.java.messages b/test/transform/resource/messages-ecj/UtilityClassOnRecord.java.messages
new file mode 100644
index 00000000..9de73ebd
--- /dev/null
+++ b/test/transform/resource/messages-ecj/UtilityClassOnRecord.java.messages
@@ -0,0 +1 @@
+5 @UtilityClass is only supported on a class (can't be an interface, enum, annotation, or record).
diff --git a/test/transform/resource/messages-ecj/ValueOnRecord.java.messages b/test/transform/resource/messages-ecj/ValueOnRecord.java.messages
new file mode 100644
index 00000000..ebb71090
--- /dev/null
+++ b/test/transform/resource/messages-ecj/ValueOnRecord.java.messages
@@ -0,0 +1 @@
+5 @Value is only supported on a class.