From 0064c534273d9fb877f7e570f7a430060c88a5fb Mon Sep 17 00:00:00 2001 From: Rawi01 Date: Thu, 10 Sep 2020 10:20:12 +0200 Subject: Add record support --- .../after-delombok/BuilderSimpleOnRecord.java | 43 +++++++ .../after-delombok/BuilderSingularOnRecord.java | 136 +++++++++++++++++++++ .../after-delombok/ConstructorsOnRecord.java | 2 + .../resource/after-delombok/DataOnRecord.java | 2 + .../after-delombok/EqualsAndHashCodeOnRecord.java | 2 + .../after-delombok/FieldDefaultsOnRecord.java | 2 + .../after-delombok/FieldNameConstantsOnRecord.java | 9 ++ .../resource/after-delombok/GetterOnRecord.java | 2 + .../after-delombok/LoggerConfigOnRecord.java | 2 + .../LoggerSlf4jNonStaticOnRecord.java | 3 + .../after-delombok/LoggerSlf4jOnRecord.java | 3 + .../NonNullExistingConstructorOnRecord.java | 22 ++++ .../resource/after-delombok/NonNullOnRecord.java | 22 ++++ .../resource/after-delombok/SetterOnRecord.java | 2 + .../after-delombok/SynchronizedInRecord.java | 6 + .../resource/after-delombok/ToStringOnRecord.java | 2 + .../after-delombok/UtilityClassOnRecord.java | 2 + .../resource/after-delombok/ValueOnRecord.java | 2 + .../resource/after-delombok/WithByOnRecord.java | 6 + .../resource/after-delombok/WithOnRecord.java | 11 ++ .../resource/after-ecj/BuilderSimpleOnRecord.java | 34 ++++++ .../after-ecj/BuilderSingularOnRecord.java | 128 +++++++++++++++++++ .../resource/after-ecj/ConstructorsOnRecord.java | 12 ++ .../transform/resource/after-ecj/DataOnRecord.java | 10 ++ .../after-ecj/EqualsAndHashCodeOnRecord.java | 10 ++ .../resource/after-ecj/FieldDefaultsOnRecord.java | 9 ++ .../after-ecj/FieldNameConstantsOnRecord.java | 27 ++++ .../resource/after-ecj/GetterOnRecord.java | 10 ++ .../resource/after-ecj/LoggerConfigOnRecord.java | 10 ++ .../resource/after-ecj/LoggerSlf4jOnRecord.java | 13 ++ .../NonNullExistingConstructorOnRecord.java | 30 +++++ .../resource/after-ecj/NonNullOnRecord.java | 30 +++++ .../resource/after-ecj/SetterOnRecord.java | 10 ++ .../resource/after-ecj/SynchronizedInRecord.java | 14 +++ .../resource/after-ecj/ToStringOnRecord.java | 10 ++ .../resource/after-ecj/UtilityClassOnRecord.java | 10 ++ .../resource/after-ecj/ValueOnRecord.java | 10 ++ .../resource/after-ecj/WithByOnRecord.java | 13 ++ .../transform/resource/after-ecj/WithOnRecord.java | 16 +++ .../resource/before/BuilderSimpleOnRecord.java | 7 ++ .../resource/before/BuilderSingularOnRecord.java | 11 ++ .../resource/before/ConstructorsOnRecord.java | 11 ++ test/transform/resource/before/DataOnRecord.java | 7 ++ .../resource/before/EqualsAndHashCodeOnRecord.java | 7 ++ .../resource/before/FieldDefaultsOnRecord.java | 5 + .../before/FieldNameConstantsOnRecord.java | 9 ++ test/transform/resource/before/GetterOnRecord.java | 7 ++ .../resource/before/LoggerConfigOnRecord.java | 8 ++ .../resource/before/LoggerSlf4jOnRecord.java | 7 ++ .../before/NonNullExistingConstructorOnRecord.java | 9 ++ .../transform/resource/before/NonNullOnRecord.java | 9 ++ test/transform/resource/before/SetterOnRecord.java | 7 ++ .../resource/before/SuperBuilderOnRecord.java | 8 ++ .../resource/before/SynchronizedInRecord.java | 10 ++ .../resource/before/ToStringOnRecord.java | 7 ++ .../resource/before/UtilityClassOnRecord.java | 7 ++ test/transform/resource/before/ValueOnRecord.java | 7 ++ test/transform/resource/before/WithByOnRecord.java | 6 + test/transform/resource/before/WithOnRecord.java | 7 ++ .../ConstructorsOnRecord.java.messages | 3 + .../messages-delombok/DataOnRecord.java.messages | 1 + .../EqualsAndHashCodeOnRecord.java.messages | 1 + .../FieldDefaultsOnRecord.java.messages | 1 + .../messages-delombok/GetterOnRecord.java.messages | 1 + .../LoggerConfigOnRecord.java.messages | 1 + .../messages-delombok/SetterOnRecord.java.messages | 1 + .../SuperBuilderOnRecord.java.messages | 1 + .../SynchronizedInRecord.java.messages | 1 + .../ToStringOnRecord.java.messages | 1 + .../UtilityClassErrors.java.messages | 2 +- .../UtilityClassOnRecord.java.messages | 1 + .../messages-delombok/ValueOnRecord.java.messages | 1 + .../ConstructorsOnRecord.java.messages | 3 + .../messages-ecj/DataOnRecord.java.messages | 1 + .../EqualsAndHashCodeOnRecord.java.messages | 1 + .../FieldDefaultsOnRecord.java.messages | 1 + .../messages-ecj/GetterOnRecord.java.messages | 1 + .../LoggerConfigOnRecord.java.messages | 1 + .../messages-ecj/SetterOnRecord.java.messages | 1 + .../SuperBuilderOnRecord.java.messages | 1 + .../SynchronizedInRecord.java.messages | 1 + .../messages-ecj/ToStringOnRecord.java.messages | 1 + .../messages-ecj/UtilityClassErrors.java.messages | 2 +- .../UtilityClassOnRecord.java.messages | 1 + .../messages-ecj/ValueOnRecord.java.messages | 1 + 85 files changed, 873 insertions(+), 2 deletions(-) create mode 100644 test/transform/resource/after-delombok/BuilderSimpleOnRecord.java create mode 100644 test/transform/resource/after-delombok/BuilderSingularOnRecord.java create mode 100644 test/transform/resource/after-delombok/ConstructorsOnRecord.java create mode 100644 test/transform/resource/after-delombok/DataOnRecord.java create mode 100644 test/transform/resource/after-delombok/EqualsAndHashCodeOnRecord.java create mode 100644 test/transform/resource/after-delombok/FieldDefaultsOnRecord.java create mode 100644 test/transform/resource/after-delombok/FieldNameConstantsOnRecord.java create mode 100644 test/transform/resource/after-delombok/GetterOnRecord.java create mode 100644 test/transform/resource/after-delombok/LoggerConfigOnRecord.java create mode 100644 test/transform/resource/after-delombok/LoggerSlf4jNonStaticOnRecord.java create mode 100644 test/transform/resource/after-delombok/LoggerSlf4jOnRecord.java create mode 100644 test/transform/resource/after-delombok/NonNullExistingConstructorOnRecord.java create mode 100644 test/transform/resource/after-delombok/NonNullOnRecord.java create mode 100644 test/transform/resource/after-delombok/SetterOnRecord.java create mode 100644 test/transform/resource/after-delombok/SynchronizedInRecord.java create mode 100644 test/transform/resource/after-delombok/ToStringOnRecord.java create mode 100644 test/transform/resource/after-delombok/UtilityClassOnRecord.java create mode 100644 test/transform/resource/after-delombok/ValueOnRecord.java create mode 100644 test/transform/resource/after-delombok/WithByOnRecord.java create mode 100644 test/transform/resource/after-delombok/WithOnRecord.java create mode 100644 test/transform/resource/after-ecj/BuilderSimpleOnRecord.java create mode 100644 test/transform/resource/after-ecj/BuilderSingularOnRecord.java create mode 100644 test/transform/resource/after-ecj/ConstructorsOnRecord.java create mode 100644 test/transform/resource/after-ecj/DataOnRecord.java create mode 100644 test/transform/resource/after-ecj/EqualsAndHashCodeOnRecord.java create mode 100644 test/transform/resource/after-ecj/FieldDefaultsOnRecord.java create mode 100644 test/transform/resource/after-ecj/FieldNameConstantsOnRecord.java create mode 100644 test/transform/resource/after-ecj/GetterOnRecord.java create mode 100644 test/transform/resource/after-ecj/LoggerConfigOnRecord.java create mode 100644 test/transform/resource/after-ecj/LoggerSlf4jOnRecord.java create mode 100644 test/transform/resource/after-ecj/NonNullExistingConstructorOnRecord.java create mode 100644 test/transform/resource/after-ecj/NonNullOnRecord.java create mode 100644 test/transform/resource/after-ecj/SetterOnRecord.java create mode 100644 test/transform/resource/after-ecj/SynchronizedInRecord.java create mode 100644 test/transform/resource/after-ecj/ToStringOnRecord.java create mode 100644 test/transform/resource/after-ecj/UtilityClassOnRecord.java create mode 100644 test/transform/resource/after-ecj/ValueOnRecord.java create mode 100644 test/transform/resource/after-ecj/WithByOnRecord.java create mode 100644 test/transform/resource/after-ecj/WithOnRecord.java create mode 100644 test/transform/resource/before/BuilderSimpleOnRecord.java create mode 100644 test/transform/resource/before/BuilderSingularOnRecord.java create mode 100644 test/transform/resource/before/ConstructorsOnRecord.java create mode 100644 test/transform/resource/before/DataOnRecord.java create mode 100644 test/transform/resource/before/EqualsAndHashCodeOnRecord.java create mode 100644 test/transform/resource/before/FieldDefaultsOnRecord.java create mode 100644 test/transform/resource/before/FieldNameConstantsOnRecord.java create mode 100644 test/transform/resource/before/GetterOnRecord.java create mode 100644 test/transform/resource/before/LoggerConfigOnRecord.java create mode 100644 test/transform/resource/before/LoggerSlf4jOnRecord.java create mode 100644 test/transform/resource/before/NonNullExistingConstructorOnRecord.java create mode 100644 test/transform/resource/before/NonNullOnRecord.java create mode 100644 test/transform/resource/before/SetterOnRecord.java create mode 100644 test/transform/resource/before/SuperBuilderOnRecord.java create mode 100644 test/transform/resource/before/SynchronizedInRecord.java create mode 100644 test/transform/resource/before/ToStringOnRecord.java create mode 100644 test/transform/resource/before/UtilityClassOnRecord.java create mode 100644 test/transform/resource/before/ValueOnRecord.java create mode 100644 test/transform/resource/before/WithByOnRecord.java create mode 100644 test/transform/resource/before/WithOnRecord.java create mode 100644 test/transform/resource/messages-delombok/ConstructorsOnRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/DataOnRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/EqualsAndHashCodeOnRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/FieldDefaultsOnRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/GetterOnRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/LoggerConfigOnRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/SetterOnRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/SuperBuilderOnRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/SynchronizedInRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/ToStringOnRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/UtilityClassOnRecord.java.messages create mode 100644 test/transform/resource/messages-delombok/ValueOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/ConstructorsOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/DataOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/EqualsAndHashCodeOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/FieldDefaultsOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/GetterOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/LoggerConfigOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/SetterOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/SuperBuilderOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/SynchronizedInRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/ToStringOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/UtilityClassOnRecord.java.messages create mode 100644 test/transform/resource/messages-ecj/ValueOnRecord.java.messages (limited to 'test/transform') 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(List l, String a) { + @java.lang.SuppressWarnings("all") + protected static class BuilderSimpleOnRecordBuilder { + @java.lang.SuppressWarnings("all") + private List l; + @java.lang.SuppressWarnings("all") + private String a; + + @java.lang.SuppressWarnings("all") + BuilderSimpleOnRecordBuilder() { + } + + @java.lang.SuppressWarnings("all") + public BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder l(final List l) { + this.l = l; + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder a(final String a) { + this.a = a; + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSimpleOnRecord build() { + return new BuilderSimpleOnRecord(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 BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder builder() { + return new BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder(); + } +} 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(List children, Collection scarves, @SuppressWarnings("all") List rawList) { + @java.lang.SuppressWarnings("all") + public static class BuilderSingularOnRecordBuilder { + @java.lang.SuppressWarnings("all") + private java.util.ArrayList children; + @java.lang.SuppressWarnings("all") + private java.util.ArrayList scarves; + @java.lang.SuppressWarnings("all") + private java.util.ArrayList rawList; + + @java.lang.SuppressWarnings("all") + BuilderSingularOnRecordBuilder() { + } + + @java.lang.SuppressWarnings("all") + public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder child(final T child) { + if (this.children == null) this.children = new java.util.ArrayList(); + this.children.add(child); + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder children(final java.util.Collection children) { + if (children == null) { + throw new java.lang.NullPointerException("children cannot be null"); + } + if (this.children == null) this.children = new java.util.ArrayList(); + this.children.addAll(children); + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder clearChildren() { + if (this.children != null) this.children.clear(); + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder scarf(final Number scarf) { + if (this.scarves == null) this.scarves = new java.util.ArrayList(); + this.scarves.add(scarf); + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder scarves(final java.util.Collection scarves) { + if (scarves == null) { + throw new java.lang.NullPointerException("scarves cannot be null"); + } + if (this.scarves == null) this.scarves = new java.util.ArrayList(); + this.scarves.addAll(scarves); + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder clearScarves() { + if (this.scarves != null) this.scarves.clear(); + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder rawList(final java.lang.Object rawList) { + if (this.rawList == null) this.rawList = new java.util.ArrayList(); + this.rawList.add(rawList); + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder 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(); + this.rawList.addAll(rawList); + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSingularOnRecord.BuilderSingularOnRecordBuilder clearRawList() { + if (this.rawList != null) this.rawList.clear(); + return this; + } + + @java.lang.SuppressWarnings("all") + public BuilderSingularOnRecord build() { + java.util.List 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(this.children)); + } + java.util.Collection 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(this.scarves)); + } + java.util.List 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(this.rawList)); + } + return new BuilderSingularOnRecord(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 BuilderSingularOnRecord.BuilderSingularOnRecordBuilder builder() { + return new BuilderSingularOnRecord.BuilderSingularOnRecordBuilder(); + } +} 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 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) { + protected static @java.lang.SuppressWarnings("all") class BuilderSimpleOnRecordBuilder { + private @java.lang.SuppressWarnings("all") List l; + private @java.lang.SuppressWarnings("all") String a; + @java.lang.SuppressWarnings("all") BuilderSimpleOnRecordBuilder() { + super(); + } + public @java.lang.SuppressWarnings("all") BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder l(final List l) { + this.l = l; + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder a(final String a) { + this.a = a; + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSimpleOnRecord build() { + return new BuilderSimpleOnRecord(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 l; +/* Implicit */ private final String a; + public BuilderSimpleOnRecord(List l, String a) { + super(); + .l = l; + .a = a; + } + protected static @java.lang.SuppressWarnings("all") BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder builder() { + return new BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder(); + } +} 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) { + public static @java.lang.SuppressWarnings("all") class BuilderSingularOnRecordBuilder { + private @java.lang.SuppressWarnings("all") java.util.ArrayList children; + private @java.lang.SuppressWarnings("all") java.util.ArrayList scarves; + private @java.lang.SuppressWarnings("all") java.util.ArrayList rawList; + @java.lang.SuppressWarnings("all") BuilderSingularOnRecordBuilder() { + super(); + } + public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder child(final T child) { + if ((this.children == null)) + this.children = new java.util.ArrayList(); + this.children.add(child); + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder children(final java.util.Collection children) { + if ((children == null)) + { + throw new java.lang.NullPointerException("children cannot be null"); + } + if ((this.children == null)) + this.children = new java.util.ArrayList(); + this.children.addAll(children); + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder clearChildren() { + if ((this.children != null)) + this.children.clear(); + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder scarf(final Number scarf) { + if ((this.scarves == null)) + this.scarves = new java.util.ArrayList(); + this.scarves.add(scarf); + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder scarves(final java.util.Collection scarves) { + if ((scarves == null)) + { + throw new java.lang.NullPointerException("scarves cannot be null"); + } + if ((this.scarves == null)) + this.scarves = new java.util.ArrayList(); + this.scarves.addAll(scarves); + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder clearScarves() { + if ((this.scarves != null)) + this.scarves.clear(); + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder rawList(final java.lang.Object rawList) { + if ((this.rawList == null)) + this.rawList = new java.util.ArrayList(); + this.rawList.add(rawList); + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder 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(); + this.rawList.addAll(rawList); + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder clearRawList() { + if ((this.rawList != null)) + this.rawList.clear(); + return this; + } + public @java.lang.SuppressWarnings("all") BuilderSingularOnRecord build() { + java.util.List 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(this.children)); + } + java.util.Collection 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(this.scarves)); + } + java.util.List 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(this.rawList)); + } + return new BuilderSingularOnRecord(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 children; +/* Implicit */ private final Collection scarves; +/* Implicit */ private final List rawList; + public BuilderSingularOnRecord(@Singular List children, @Singular Collection scarves, @SuppressWarnings("all") @Singular("rawList") List rawList) { + super(); + .children = children; + .scarves = scarves; + .rawList = rawList; + } + public static @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder builder() { + return new BuilderSingularOnRecord.BuilderSingularOnRecordBuilder(); + } +} 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"; + () { + } + 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; + () { + } + 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; + () { + } + 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 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(List 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(@Singular List children, @Singular Collection 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. -- cgit From fa0b5249cf5fee28d9be13ecdf0225f651f686aa Mon Sep 17 00:00:00 2001 From: Rawi01 Date: Sat, 12 Sep 2020 14:35:40 +0200 Subject: Support With(By) on records and record components This also replaces the javac/eclipse specific code for searching the parent fields of an annotation by a search based on the lombok AST. --- src/core/lombok/core/LombokNode.java | 10 ++++------ src/core/lombok/eclipse/EclipseNode.java | 10 ---------- src/core/lombok/eclipse/handlers/HandleWithBy.java | 7 +------ src/core/lombok/javac/JavacNode.java | 10 ---------- test/transform/resource/after-delombok/WithByOnRecord.java | 5 +++++ .../resource/after-delombok/WithByOnRecordComponent.java | 6 ++++++ .../resource/after-delombok/WithOnRecordComponent.java | 6 ++++++ test/transform/resource/after-ecj/WithByOnRecord.java | 7 +++++-- .../resource/after-ecj/WithByOnRecordComponent.java | 13 +++++++++++++ .../transform/resource/after-ecj/WithOnRecordComponent.java | 13 +++++++++++++ test/transform/resource/before/WithByOnRecord.java | 3 ++- test/transform/resource/before/WithByOnRecordComponent.java | 6 ++++++ test/transform/resource/before/WithOnRecordComponent.java | 6 ++++++ 13 files changed, 67 insertions(+), 35 deletions(-) create mode 100644 test/transform/resource/after-delombok/WithByOnRecordComponent.java create mode 100644 test/transform/resource/after-delombok/WithOnRecordComponent.java create mode 100644 test/transform/resource/after-ecj/WithByOnRecordComponent.java create mode 100644 test/transform/resource/after-ecj/WithOnRecordComponent.java create mode 100644 test/transform/resource/before/WithByOnRecordComponent.java create mode 100644 test/transform/resource/before/WithOnRecordComponent.java (limited to 'test/transform') diff --git a/src/core/lombok/core/LombokNode.java b/src/core/lombok/core/LombokNode.java index abfc66a6..34273a86 100644 --- a/src/core/lombok/core/LombokNode.java +++ b/src/core/lombok/core/LombokNode.java @@ -160,17 +160,15 @@ public abstract class LombokNode, L extends LombokNode fields = new ArrayList(); for (L potentialField : type.down()) { if (potentialField.getKind() != Kind.FIELD) continue; - if (fieldContainsAnnotation(potentialField.get(), get())) fields.add(potentialField); + for (L child : potentialField.down()) { + if (child.getKind() != Kind.ANNOTATION) continue; + if (child.get() == get()) fields.add(potentialField); + } } return fields; } - /** - * Return {@code true} if the annotation is attached to the field. - */ - protected abstract boolean fieldContainsAnnotation(N field, N annotation); - /** * Returns the direct parent node in the AST tree of this node. For example, a local variable declaration's * direct parent can be e.g. an If block, but its {@code up()} {@code LombokNode} is the {@code Method} that contains it. diff --git a/src/core/lombok/eclipse/EclipseNode.java b/src/core/lombok/eclipse/EclipseNode.java index 12e9ccdb..361a8d42 100644 --- a/src/core/lombok/eclipse/EclipseNode.java +++ b/src/core/lombok/eclipse/EclipseNode.java @@ -143,16 +143,6 @@ public class EclipseNode extends lombok.core.LombokNode { switch (node.getKind()) { case FIELD: - Set fields = new LinkedHashSet(); - fields.add(node); - fields.addAll(annotationNode.upFromAnnotationToFields()); - createWithByForFields(level, fields, annotationNode, true, onMethod); + createWithByForFields(level, annotationNode.upFromAnnotationToFields(), annotationNode, true, onMethod); break; case TYPE: if (!onMethod.isEmpty()) { diff --git a/src/core/lombok/javac/JavacNode.java b/src/core/lombok/javac/JavacNode.java index 3de3f38b..e648cd51 100644 --- a/src/core/lombok/javac/JavacNode.java +++ b/src/core/lombok/javac/JavacNode.java @@ -186,16 +186,6 @@ public class JavacNode extends lombok.core.LombokNode transformer) { return new WithByOnRecord(transformer.apply(this.a), this.b); } + + @java.lang.SuppressWarnings("all") + public WithByOnRecord withBBy(final java.util.function.Function transformer) { + return new WithByOnRecord(this.a, transformer.apply(this.b)); + } } diff --git a/test/transform/resource/after-delombok/WithByOnRecordComponent.java b/test/transform/resource/after-delombok/WithByOnRecordComponent.java new file mode 100644 index 00000000..5af50625 --- /dev/null +++ b/test/transform/resource/after-delombok/WithByOnRecordComponent.java @@ -0,0 +1,6 @@ +record WithByOnRecordComponent(String a, String b) { + @java.lang.SuppressWarnings("all") + public WithByOnRecordComponent withABy(final java.util.function.Function transformer) { + return new WithByOnRecordComponent(transformer.apply(this.a), this.b); + } +} diff --git a/test/transform/resource/after-delombok/WithOnRecordComponent.java b/test/transform/resource/after-delombok/WithOnRecordComponent.java new file mode 100644 index 00000000..a5f4ec36 --- /dev/null +++ b/test/transform/resource/after-delombok/WithOnRecordComponent.java @@ -0,0 +1,6 @@ +record WithOnRecordComponent(String a, String b) { + @java.lang.SuppressWarnings("all") + public WithOnRecordComponent withA(final String a) { + return this.a == a ? this : new WithOnRecordComponent(a, this.b); + } +} diff --git a/test/transform/resource/after-ecj/WithByOnRecord.java b/test/transform/resource/after-ecj/WithByOnRecord.java index 9048c9f4..c40841c8 100644 --- a/test/transform/resource/after-ecj/WithByOnRecord.java +++ b/test/transform/resource/after-ecj/WithByOnRecord.java @@ -1,8 +1,8 @@ import lombok.experimental.WithBy; -record WithByOnRecord(String a, String b) { +@WithBy record WithByOnRecord(String a, String b) { /* Implicit */ private final String a; /* Implicit */ private final String b; - public WithByOnRecord( String a, String b) { + public WithByOnRecord(String a, String b) { super(); .a = a; .b = b; @@ -10,4 +10,7 @@ record WithByOnRecord(String a, String b) { public @java.lang.SuppressWarnings("all") WithByOnRecord withABy(final java.util.function.Function transformer) { return new WithByOnRecord(transformer.apply(this.a), this.b); } + public @java.lang.SuppressWarnings("all") WithByOnRecord withBBy(final java.util.function.Function transformer) { + return new WithByOnRecord(this.a, transformer.apply(this.b)); + } } diff --git a/test/transform/resource/after-ecj/WithByOnRecordComponent.java b/test/transform/resource/after-ecj/WithByOnRecordComponent.java new file mode 100644 index 00000000..19fe508c --- /dev/null +++ b/test/transform/resource/after-ecj/WithByOnRecordComponent.java @@ -0,0 +1,13 @@ +import lombok.experimental.WithBy; +record WithByOnRecordComponent(String a, String b) { +/* Implicit */ private final String a; +/* Implicit */ private final String b; + public WithByOnRecordComponent( String a, String b) { + super(); + .a = a; + .b = b; + } + public @java.lang.SuppressWarnings("all") WithByOnRecordComponent withABy(final java.util.function.Function transformer) { + return new WithByOnRecordComponent(transformer.apply(this.a), this.b); + } +} diff --git a/test/transform/resource/after-ecj/WithOnRecordComponent.java b/test/transform/resource/after-ecj/WithOnRecordComponent.java new file mode 100644 index 00000000..42028f81 --- /dev/null +++ b/test/transform/resource/after-ecj/WithOnRecordComponent.java @@ -0,0 +1,13 @@ +import lombok.With; +record WithOnRecordComponent(String a, String b) { +/* Implicit */ private final String a; +/* Implicit */ private final String b; + public WithOnRecordComponent( String a, String b) { + super(); + .a = a; + .b = b; + } + public @java.lang.SuppressWarnings("all") WithOnRecordComponent withA(final String a) { + return ((this.a == a) ? this : new WithOnRecordComponent(a, this.b)); + } +} diff --git a/test/transform/resource/before/WithByOnRecord.java b/test/transform/resource/before/WithByOnRecord.java index 98cbff9b..6c7b8e2d 100644 --- a/test/transform/resource/before/WithByOnRecord.java +++ b/test/transform/resource/before/WithByOnRecord.java @@ -2,5 +2,6 @@ import lombok.experimental.WithBy; -record WithByOnRecord(@WithBy String a, String b) { +@WithBy +record WithByOnRecord(String a, String b) { } \ No newline at end of file diff --git a/test/transform/resource/before/WithByOnRecordComponent.java b/test/transform/resource/before/WithByOnRecordComponent.java new file mode 100644 index 00000000..7e0f0f19 --- /dev/null +++ b/test/transform/resource/before/WithByOnRecordComponent.java @@ -0,0 +1,6 @@ +// version 14: + +import lombok.experimental.WithBy; + +record WithByOnRecordComponent(@WithBy String a, String b) { +} \ No newline at end of file diff --git a/test/transform/resource/before/WithOnRecordComponent.java b/test/transform/resource/before/WithOnRecordComponent.java new file mode 100644 index 00000000..6f827851 --- /dev/null +++ b/test/transform/resource/before/WithOnRecordComponent.java @@ -0,0 +1,6 @@ +// version 14: + +import lombok.With; + +record WithOnRecordComponent(@With String a, String b) { +} \ No newline at end of file -- cgit