From 3987f54b8321ae666cb1c774aef5986df05bf4ad Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Tue, 3 Jul 2018 04:17:47 +0200 Subject: [issue #1347] When lombok generates constructors, it should call the `@Builder.Default` static method instead of initializing to null/0/false. This does that, for javac. --- .../ConstructorsWithBuilderDefaults.java | 72 +++++++++++++++++++++ .../ConstructorsWithBuilderDefaults2.java | 74 ++++++++++++++++++++++ .../before/ConstructorsWithBuilderDefaults.java | 8 +++ .../before/ConstructorsWithBuilderDefaults2.java | 8 +++ 4 files changed, 162 insertions(+) create mode 100644 test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults.java create mode 100644 test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults2.java create mode 100644 test/transform/resource/before/ConstructorsWithBuilderDefaults.java create mode 100644 test/transform/resource/before/ConstructorsWithBuilderDefaults2.java (limited to 'test') diff --git a/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults.java b/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults.java new file mode 100644 index 00000000..bd934b44 --- /dev/null +++ b/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults.java @@ -0,0 +1,72 @@ +final class ConstructorsWithBuilderDefaults { + private final int x; + @java.lang.SuppressWarnings("all") + private static int $default$x() { + return 5; + } + @java.lang.SuppressWarnings("all") + public static class ConstructorsWithBuilderDefaultsBuilder { + @java.lang.SuppressWarnings("all") + private boolean x$set; + @java.lang.SuppressWarnings("all") + private int x; + @java.lang.SuppressWarnings("all") + ConstructorsWithBuilderDefaultsBuilder() { + } + @java.lang.SuppressWarnings("all") + public ConstructorsWithBuilderDefaultsBuilder x(final int x) { + this.x = x; + x$set = true; + return this; + } + @java.lang.SuppressWarnings("all") + public ConstructorsWithBuilderDefaults build() { + int x = this.x; + if (!x$set) x = ConstructorsWithBuilderDefaults.$default$x(); + return new ConstructorsWithBuilderDefaults(x); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public java.lang.String toString() { + return "ConstructorsWithBuilderDefaults.ConstructorsWithBuilderDefaultsBuilder(x=" + this.x + ")"; + } + } + @java.lang.SuppressWarnings("all") + public static ConstructorsWithBuilderDefaultsBuilder builder() { + return new ConstructorsWithBuilderDefaultsBuilder(); + } + @java.lang.SuppressWarnings("all") + public int getX() { + return this.x; + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof ConstructorsWithBuilderDefaults)) return false; + final ConstructorsWithBuilderDefaults other = (ConstructorsWithBuilderDefaults) o; + if (this.getX() != other.getX()) return false; + return true; + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public int hashCode() { + final int PRIME = 59; + int result = 1; + result = result * PRIME + this.getX(); + return result; + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public java.lang.String toString() { + return "ConstructorsWithBuilderDefaults(x=" + this.getX() + ")"; + } + @java.lang.SuppressWarnings("all") + public ConstructorsWithBuilderDefaults() { + this.x = ConstructorsWithBuilderDefaults.$default$x(); + } + @java.lang.SuppressWarnings("all") + public ConstructorsWithBuilderDefaults(final int x) { + this.x = x; + } +} diff --git a/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults2.java b/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults2.java new file mode 100644 index 00000000..2576e2a9 --- /dev/null +++ b/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults2.java @@ -0,0 +1,74 @@ +//CONF: lombok.noArgsConstructor.extraPrivate = true +import lombok.NoArgsConstructor; +final class ConstructorsWithBuilderDefaults { + private final int x; + @java.lang.SuppressWarnings("all") + private static int $default$x() { + return 5; + } + @java.lang.SuppressWarnings("all") + ConstructorsWithBuilderDefaults(final int x) { + this.x = x; + } + @java.lang.SuppressWarnings("all") + public static class ConstructorsWithBuilderDefaultsBuilder { + @java.lang.SuppressWarnings("all") + private boolean x$set; + @java.lang.SuppressWarnings("all") + private int x; + @java.lang.SuppressWarnings("all") + ConstructorsWithBuilderDefaultsBuilder() { + } + @java.lang.SuppressWarnings("all") + public ConstructorsWithBuilderDefaultsBuilder x(final int x) { + this.x = x; + x$set = true; + return this; + } + @java.lang.SuppressWarnings("all") + public ConstructorsWithBuilderDefaults build() { + int x = this.x; + if (!x$set) x = ConstructorsWithBuilderDefaults.$default$x(); + return new ConstructorsWithBuilderDefaults(x); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public java.lang.String toString() { + return "ConstructorsWithBuilderDefaults.ConstructorsWithBuilderDefaultsBuilder(x=" + this.x + ")"; + } + } + @java.lang.SuppressWarnings("all") + public static ConstructorsWithBuilderDefaultsBuilder builder() { + return new ConstructorsWithBuilderDefaultsBuilder(); + } + @java.lang.SuppressWarnings("all") + private ConstructorsWithBuilderDefaults() { + this.x = ConstructorsWithBuilderDefaults.$default$x(); + } + @java.lang.SuppressWarnings("all") + public int getX() { + return this.x; + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (!(o instanceof ConstructorsWithBuilderDefaults)) return false; + final ConstructorsWithBuilderDefaults other = (ConstructorsWithBuilderDefaults) o; + if (this.getX() != other.getX()) return false; + return true; + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public int hashCode() { + final int PRIME = 59; + int result = 1; + result = result * PRIME + this.getX(); + return result; + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + public java.lang.String toString() { + return "ConstructorsWithBuilderDefaults(x=" + this.getX() + ")"; + } +} \ No newline at end of file diff --git a/test/transform/resource/before/ConstructorsWithBuilderDefaults.java b/test/transform/resource/before/ConstructorsWithBuilderDefaults.java new file mode 100644 index 00000000..5dd2940b --- /dev/null +++ b/test/transform/resource/before/ConstructorsWithBuilderDefaults.java @@ -0,0 +1,8 @@ +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; +import lombok.Value; +import lombok.Builder; + +@NoArgsConstructor @AllArgsConstructor @Builder @Value class ConstructorsWithBuilderDefaults { + @Builder.Default int x = 5; +} diff --git a/test/transform/resource/before/ConstructorsWithBuilderDefaults2.java b/test/transform/resource/before/ConstructorsWithBuilderDefaults2.java new file mode 100644 index 00000000..38300390 --- /dev/null +++ b/test/transform/resource/before/ConstructorsWithBuilderDefaults2.java @@ -0,0 +1,8 @@ +//CONF: lombok.noArgsConstructor.extraPrivate = true +import lombok.NoArgsConstructor; +import lombok.Value; +import lombok.Builder; + +@Builder @Value class ConstructorsWithBuilderDefaults { + @Builder.Default int x = 5; +} -- cgit