aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/core/lombok/eclipse/handlers/singulars/EclipseGuavaSingularizer.java2
-rw-r--r--src/core/lombok/javac/handlers/singulars/JavacGuavaSingularizer.java2
-rw-r--r--test/transform/resource/after-delombok/SuperBuilderSingularToBuilderGuava.java252
-rw-r--r--test/transform/resource/after-ecj/SuperBuilderSingularToBuilderGuava.java221
-rw-r--r--test/transform/resource/before/SuperBuilderSingularToBuilderGuava.java19
5 files changed, 494 insertions, 2 deletions
diff --git a/src/core/lombok/eclipse/handlers/singulars/EclipseGuavaSingularizer.java b/src/core/lombok/eclipse/handlers/singulars/EclipseGuavaSingularizer.java
index 9b464a25..59fccdab 100755
--- a/src/core/lombok/eclipse/handlers/singulars/EclipseGuavaSingularizer.java
+++ b/src/core/lombok/eclipse/handlers/singulars/EclipseGuavaSingularizer.java
@@ -93,7 +93,7 @@ abstract class EclipseGuavaSingularizer extends EclipseSingularizer {
}
@Override protected char[][] getEmptyMakerReceiver(String targetFqn) {
- return CGCC;
+ return makeGuavaTypeName(GuavaTypeMap.getGuavaTypeName(targetFqn), false);
}
@Override public List<EclipseNode> generateFields(SingularData data, EclipseNode builderType) {
diff --git a/src/core/lombok/javac/handlers/singulars/JavacGuavaSingularizer.java b/src/core/lombok/javac/handlers/singulars/JavacGuavaSingularizer.java
index ce5aad5e..808b794a 100644
--- a/src/core/lombok/javac/handlers/singulars/JavacGuavaSingularizer.java
+++ b/src/core/lombok/javac/handlers/singulars/JavacGuavaSingularizer.java
@@ -52,7 +52,7 @@ abstract class JavacGuavaSingularizer extends JavacSingularizer {
}
@Override protected String getEmptyMaker(String target) {
- return target + ".of";
+ return "com.google.common.collect." + GuavaTypeMap.getGuavaTypeName(target) + ".of";
}
protected String getBuilderMethodName(SingularData data) {
diff --git a/test/transform/resource/after-delombok/SuperBuilderSingularToBuilderGuava.java b/test/transform/resource/after-delombok/SuperBuilderSingularToBuilderGuava.java
new file mode 100644
index 00000000..ec716fdd
--- /dev/null
+++ b/test/transform/resource/after-delombok/SuperBuilderSingularToBuilderGuava.java
@@ -0,0 +1,252 @@
+public class SuperBuilderSingularToBuilderGuava {
+ public static class Parent<T> {
+ private com.google.common.collect.ImmutableList<T> cards;
+ private com.google.common.collect.ImmutableCollection<? extends Number> frogs;
+ @SuppressWarnings("all")
+ private com.google.common.collect.ImmutableSet rawSet;
+ private com.google.common.collect.ImmutableSortedSet<String> passes;
+ private com.google.common.collect.ImmutableTable<? extends Number, ? extends Number, String> users;
+ @java.lang.SuppressWarnings("all")
+ public static abstract class ParentBuilder<T, C extends SuperBuilderSingularToBuilderGuava.Parent<T>, B extends SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, C, B>> {
+ @java.lang.SuppressWarnings("all")
+ private com.google.common.collect.ImmutableList.Builder<T> cards;
+ @java.lang.SuppressWarnings("all")
+ private com.google.common.collect.ImmutableList.Builder<Number> frogs;
+ @java.lang.SuppressWarnings("all")
+ private com.google.common.collect.ImmutableSet.Builder<java.lang.Object> rawSet;
+ @java.lang.SuppressWarnings("all")
+ private com.google.common.collect.ImmutableSortedSet.Builder<String> passes;
+ @java.lang.SuppressWarnings("all")
+ private com.google.common.collect.ImmutableTable.Builder<Number, Number, String> users;
+ @java.lang.SuppressWarnings("all")
+ protected B $fillValuesFrom(final C instance) {
+ SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ private static <T> void $fillValuesFromInstanceIntoBuilder(final SuperBuilderSingularToBuilderGuava.Parent<T> instance, final SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, ?, ?> b) {
+ b.cards(instance.cards == null ? com.google.common.collect.ImmutableList.<T>of() : instance.cards);
+ b.frogs(instance.frogs == null ? com.google.common.collect.ImmutableList.<Number>of() : instance.frogs);
+ b.rawSet(instance.rawSet == null ? com.google.common.collect.ImmutableSet.<java.lang.Object>of() : instance.rawSet);
+ b.passes(instance.passes == null ? com.google.common.collect.ImmutableSortedSet.<String>of() : instance.passes);
+ b.users(instance.users == null ? com.google.common.collect.ImmutableTable.<Number, Number, String>of() : instance.users);
+ }
+ @java.lang.SuppressWarnings("all")
+ protected abstract B self();
+ @java.lang.SuppressWarnings("all")
+ public abstract C build();
+ @java.lang.SuppressWarnings("all")
+ public B card(final T card) {
+ if (this.cards == null) this.cards = com.google.common.collect.ImmutableList.builder();
+ this.cards.add(card);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B cards(final java.lang.Iterable<? extends T> cards) {
+ if (cards == null) {
+ throw new java.lang.NullPointerException("cards cannot be null");
+ }
+ if (this.cards == null) this.cards = com.google.common.collect.ImmutableList.builder();
+ this.cards.addAll(cards);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B clearCards() {
+ this.cards = null;
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B frog(final Number frog) {
+ if (this.frogs == null) this.frogs = com.google.common.collect.ImmutableList.builder();
+ this.frogs.add(frog);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B frogs(final java.lang.Iterable<? extends Number> frogs) {
+ if (frogs == null) {
+ throw new java.lang.NullPointerException("frogs cannot be null");
+ }
+ if (this.frogs == null) this.frogs = com.google.common.collect.ImmutableList.builder();
+ this.frogs.addAll(frogs);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B clearFrogs() {
+ this.frogs = null;
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B rawSet(final java.lang.Object rawSet) {
+ if (this.rawSet == null) this.rawSet = com.google.common.collect.ImmutableSet.builder();
+ this.rawSet.add(rawSet);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B rawSet(final java.lang.Iterable<?> rawSet) {
+ if (rawSet == null) {
+ throw new java.lang.NullPointerException("rawSet cannot be null");
+ }
+ if (this.rawSet == null) this.rawSet = com.google.common.collect.ImmutableSet.builder();
+ this.rawSet.addAll(rawSet);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B clearRawSet() {
+ this.rawSet = null;
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B pass(final String pass) {
+ if (this.passes == null) this.passes = com.google.common.collect.ImmutableSortedSet.naturalOrder();
+ this.passes.add(pass);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B passes(final java.lang.Iterable<? extends String> passes) {
+ if (passes == null) {
+ throw new java.lang.NullPointerException("passes cannot be null");
+ }
+ if (this.passes == null) this.passes = com.google.common.collect.ImmutableSortedSet.naturalOrder();
+ this.passes.addAll(passes);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B clearPasses() {
+ this.passes = null;
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B user(final Number rowKey, final Number columnKey, final String value) {
+ if (this.users == null) this.users = com.google.common.collect.ImmutableTable.builder();
+ this.users.put(rowKey, columnKey, value);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B users(final com.google.common.collect.Table<? extends Number, ? extends Number, ? extends String> users) {
+ if (users == null) {
+ throw new java.lang.NullPointerException("users cannot be null");
+ }
+ if (this.users == null) this.users = com.google.common.collect.ImmutableTable.builder();
+ this.users.putAll(users);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ public B clearUsers() {
+ this.users = null;
+ return self();
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public java.lang.String toString() {
+ return "SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder(cards=" + this.cards + ", frogs=" + this.frogs + ", rawSet=" + this.rawSet + ", passes=" + this.passes + ", users=" + this.users + ")";
+ }
+ }
+ @java.lang.SuppressWarnings("all")
+ private static final class ParentBuilderImpl<T> extends SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, SuperBuilderSingularToBuilderGuava.Parent<T>, SuperBuilderSingularToBuilderGuava.Parent.ParentBuilderImpl<T>> {
+ @java.lang.SuppressWarnings("all")
+ private ParentBuilderImpl() {
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ protected SuperBuilderSingularToBuilderGuava.Parent.ParentBuilderImpl<T> self() {
+ return this;
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public SuperBuilderSingularToBuilderGuava.Parent<T> build() {
+ return new SuperBuilderSingularToBuilderGuava.Parent<T>(this);
+ }
+ }
+ @java.lang.SuppressWarnings("all")
+ protected Parent(final SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, ?, ?> b) {
+ com.google.common.collect.ImmutableList<T> cards = b.cards == null ? com.google.common.collect.ImmutableList.<T>of() : b.cards.build();
+ this.cards = cards;
+ com.google.common.collect.ImmutableCollection<Number> frogs = b.frogs == null ? com.google.common.collect.ImmutableList.<Number>of() : b.frogs.build();
+ this.frogs = frogs;
+ com.google.common.collect.ImmutableSet<java.lang.Object> rawSet = b.rawSet == null ? com.google.common.collect.ImmutableSet.<java.lang.Object>of() : b.rawSet.build();
+ this.rawSet = rawSet;
+ com.google.common.collect.ImmutableSortedSet<String> passes = b.passes == null ? com.google.common.collect.ImmutableSortedSet.<String>of() : b.passes.build();
+ this.passes = passes;
+ com.google.common.collect.ImmutableTable<Number, Number, String> users = b.users == null ? com.google.common.collect.ImmutableTable.<Number, Number, String>of() : b.users.build();
+ this.users = users;
+ }
+ @java.lang.SuppressWarnings("all")
+ public static <T> SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, ?, ?> builder() {
+ return new SuperBuilderSingularToBuilderGuava.Parent.ParentBuilderImpl<T>();
+ }
+ @java.lang.SuppressWarnings("all")
+ public SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, ?, ?> toBuilder() {
+ return new SuperBuilderSingularToBuilderGuava.Parent.ParentBuilderImpl<T>().$fillValuesFrom(this);
+ }
+ }
+ public static class Child<T> extends Parent<T> {
+ private double field3;
+ @java.lang.SuppressWarnings("all")
+ public static abstract class ChildBuilder<T, C extends SuperBuilderSingularToBuilderGuava.Child<T>, B extends SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, C, B>> extends Parent.ParentBuilder<T, C, B> {
+ @java.lang.SuppressWarnings("all")
+ private double field3;
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ protected B $fillValuesFrom(final C instance) {
+ super.$fillValuesFrom(instance);
+ SuperBuilderSingularToBuilderGuava.Child.ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
+ return self();
+ }
+ @java.lang.SuppressWarnings("all")
+ private static <T> void $fillValuesFromInstanceIntoBuilder(final SuperBuilderSingularToBuilderGuava.Child<T> instance, final SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, ?, ?> b) {
+ b.field3(instance.field3);
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ protected abstract B self();
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public abstract C build();
+ /**
+ * @return {@code this}.
+ */
+ @java.lang.SuppressWarnings("all")
+ public B field3(final double field3) {
+ this.field3 = field3;
+ return self();
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public java.lang.String toString() {
+ return "SuperBuilderSingularToBuilderGuava.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")";
+ }
+ }
+ @java.lang.SuppressWarnings("all")
+ private static final class ChildBuilderImpl<T> extends SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, SuperBuilderSingularToBuilderGuava.Child<T>, SuperBuilderSingularToBuilderGuava.Child.ChildBuilderImpl<T>> {
+ @java.lang.SuppressWarnings("all")
+ private ChildBuilderImpl() {
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ protected SuperBuilderSingularToBuilderGuava.Child.ChildBuilderImpl<T> self() {
+ return this;
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public SuperBuilderSingularToBuilderGuava.Child<T> build() {
+ return new SuperBuilderSingularToBuilderGuava.Child<T>(this);
+ }
+ }
+ @java.lang.SuppressWarnings("all")
+ protected Child(final SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, ?, ?> b) {
+ super(b);
+ this.field3 = b.field3;
+ }
+ @java.lang.SuppressWarnings("all")
+ public static <T> SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, ?, ?> builder() {
+ return new SuperBuilderSingularToBuilderGuava.Child.ChildBuilderImpl<T>();
+ }
+ @java.lang.SuppressWarnings("all")
+ public SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, ?, ?> toBuilder() {
+ return new SuperBuilderSingularToBuilderGuava.Child.ChildBuilderImpl<T>().$fillValuesFrom(this);
+ }
+ }
+ public static void test() {
+ Child<Integer> x = Child.<Integer>builder().card(1).build().toBuilder().build();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/SuperBuilderSingularToBuilderGuava.java b/test/transform/resource/after-ecj/SuperBuilderSingularToBuilderGuava.java
new file mode 100644
index 00000000..76a80781
--- /dev/null
+++ b/test/transform/resource/after-ecj/SuperBuilderSingularToBuilderGuava.java
@@ -0,0 +1,221 @@
+public class SuperBuilderSingularToBuilderGuava {
+ public static @lombok.experimental.SuperBuilder(toBuilder = true) class Parent<T> {
+ public static abstract @java.lang.SuppressWarnings("all") class ParentBuilder<T, C extends SuperBuilderSingularToBuilderGuava.Parent<T>, B extends SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, C, B>> {
+ private @java.lang.SuppressWarnings("all") com.google.common.collect.ImmutableList.Builder<T> cards;
+ private @java.lang.SuppressWarnings("all") com.google.common.collect.ImmutableList.Builder<Number> frogs;
+ private @java.lang.SuppressWarnings("all") com.google.common.collect.ImmutableSet.Builder<java.lang.Object> rawSet;
+ private @java.lang.SuppressWarnings("all") com.google.common.collect.ImmutableSortedSet.Builder<String> passes;
+ private @java.lang.SuppressWarnings("all") com.google.common.collect.ImmutableTable.Builder<Number, Number, String> users;
+ public ParentBuilder() {
+ super();
+ }
+ protected @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) {
+ SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
+ return self();
+ }
+ private static @java.lang.SuppressWarnings("all") <T>void $fillValuesFromInstanceIntoBuilder(final SuperBuilderSingularToBuilderGuava.Parent<T> instance, final SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, ?, ?> b) {
+ b.cards(((instance.cards == null) ? com.google.common.collect.ImmutableList.<T>of() : instance.cards));
+ b.frogs(((instance.frogs == null) ? com.google.common.collect.ImmutableList.<Number>of() : instance.frogs));
+ b.rawSet(((instance.rawSet == null) ? com.google.common.collect.ImmutableSet.<java.lang.Object>of() : instance.rawSet));
+ b.passes(((instance.passes == null) ? com.google.common.collect.ImmutableSortedSet.<String>of() : instance.passes));
+ b.users(((instance.users == null) ? com.google.common.collect.ImmutableTable.<Number, Number, String>of() : instance.users));
+ }
+ protected abstract @java.lang.SuppressWarnings("all") B self();
+ public abstract @java.lang.SuppressWarnings("all") C build();
+ public @java.lang.SuppressWarnings("all") B card(final T card) {
+ if ((this.cards == null))
+ this.cards = com.google.common.collect.ImmutableList.builder();
+ this.cards.add(card);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B cards(final java.lang.Iterable<? extends T> cards) {
+ if ((cards == null))
+ {
+ throw new java.lang.NullPointerException("cards cannot be null");
+ }
+ if ((this.cards == null))
+ this.cards = com.google.common.collect.ImmutableList.builder();
+ this.cards.addAll(cards);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B clearCards() {
+ this.cards = null;
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B frog(final Number frog) {
+ if ((this.frogs == null))
+ this.frogs = com.google.common.collect.ImmutableList.builder();
+ this.frogs.add(frog);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B frogs(final java.lang.Iterable<? extends Number> frogs) {
+ if ((frogs == null))
+ {
+ throw new java.lang.NullPointerException("frogs cannot be null");
+ }
+ if ((this.frogs == null))
+ this.frogs = com.google.common.collect.ImmutableList.builder();
+ this.frogs.addAll(frogs);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B clearFrogs() {
+ this.frogs = null;
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B rawSet(final java.lang.Object rawSet) {
+ if ((this.rawSet == null))
+ this.rawSet = com.google.common.collect.ImmutableSet.builder();
+ this.rawSet.add(rawSet);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B rawSet(final java.lang.Iterable<?> rawSet) {
+ if ((rawSet == null))
+ {
+ throw new java.lang.NullPointerException("rawSet cannot be null");
+ }
+ if ((this.rawSet == null))
+ this.rawSet = com.google.common.collect.ImmutableSet.builder();
+ this.rawSet.addAll(rawSet);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B clearRawSet() {
+ this.rawSet = null;
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B pass(final String pass) {
+ if ((this.passes == null))
+ this.passes = com.google.common.collect.ImmutableSortedSet.naturalOrder();
+ this.passes.add(pass);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B passes(final java.lang.Iterable<? extends String> passes) {
+ if ((passes == null))
+ {
+ throw new java.lang.NullPointerException("passes cannot be null");
+ }
+ if ((this.passes == null))
+ this.passes = com.google.common.collect.ImmutableSortedSet.naturalOrder();
+ this.passes.addAll(passes);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B clearPasses() {
+ this.passes = null;
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B user(final Number rowKey, final Number columnKey, final String value) {
+ if ((this.users == null))
+ this.users = com.google.common.collect.ImmutableTable.builder();
+ this.users.put(rowKey, columnKey, value);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B users(final com.google.common.collect.Table<? extends Number, ? extends Number, ? extends String> users) {
+ if ((users == null))
+ {
+ throw new java.lang.NullPointerException("users cannot be null");
+ }
+ if ((this.users == null))
+ this.users = com.google.common.collect.ImmutableTable.builder();
+ this.users.putAll(users);
+ return self();
+ }
+ public @java.lang.SuppressWarnings("all") B clearUsers() {
+ this.users = null;
+ return self();
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
+ return (((((((((("SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder(cards=" + this.cards) + ", frogs=") + this.frogs) + ", rawSet=") + this.rawSet) + ", passes=") + this.passes) + ", users=") + this.users) + ")");
+ }
+ }
+ private static final @java.lang.SuppressWarnings("all") class ParentBuilderImpl<T> extends SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, SuperBuilderSingularToBuilderGuava.Parent<T>, SuperBuilderSingularToBuilderGuava.Parent.ParentBuilderImpl<T>> {
+ private ParentBuilderImpl() {
+ super();
+ }
+ protected @java.lang.Override @java.lang.SuppressWarnings("all") SuperBuilderSingularToBuilderGuava.Parent.ParentBuilderImpl<T> self() {
+ return this;
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") SuperBuilderSingularToBuilderGuava.Parent<T> build() {
+ return new SuperBuilderSingularToBuilderGuava.Parent<T>(this);
+ }
+ }
+ private @lombok.Singular com.google.common.collect.ImmutableList<T> cards;
+ private @lombok.Singular com.google.common.collect.ImmutableCollection<? extends Number> frogs;
+ private @SuppressWarnings("all") @lombok.Singular("rawSet") com.google.common.collect.ImmutableSet rawSet;
+ private @lombok.Singular com.google.common.collect.ImmutableSortedSet<String> passes;
+ private @lombok.Singular com.google.common.collect.ImmutableTable<? extends Number, ? extends Number, String> users;
+ protected @java.lang.SuppressWarnings("all") Parent(final SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, ?, ?> b) {
+ super();
+ com.google.common.collect.ImmutableList<T> cards = ((b.cards == null) ? com.google.common.collect.ImmutableList.<T>of() : b.cards.build());
+ this.cards = cards;
+ com.google.common.collect.ImmutableCollection<Number> frogs = ((b.frogs == null) ? com.google.common.collect.ImmutableList.<Number>of() : b.frogs.build());
+ this.frogs = frogs;
+ com.google.common.collect.ImmutableSet<java.lang.Object> rawSet = ((b.rawSet == null) ? com.google.common.collect.ImmutableSet.<java.lang.Object>of() : b.rawSet.build());
+ this.rawSet = rawSet;
+ com.google.common.collect.ImmutableSortedSet<String> passes = ((b.passes == null) ? com.google.common.collect.ImmutableSortedSet.<String>of() : b.passes.build());
+ this.passes = passes;
+ com.google.common.collect.ImmutableTable<Number, Number, String> users = ((b.users == null) ? com.google.common.collect.ImmutableTable.<Number, Number, String>of() : b.users.build());
+ this.users = users;
+ }
+ public @java.lang.SuppressWarnings("all") SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, ?, ?> toBuilder() {
+ return new SuperBuilderSingularToBuilderGuava.Parent.ParentBuilderImpl<T>().$fillValuesFrom(this);
+ }
+ public static @java.lang.SuppressWarnings("all") <T>SuperBuilderSingularToBuilderGuava.Parent.ParentBuilder<T, ?, ?> builder() {
+ return new SuperBuilderSingularToBuilderGuava.Parent.ParentBuilderImpl<T>();
+ }
+ }
+ public static @lombok.experimental.SuperBuilder(toBuilder = true) class Child<T> extends Parent<T> {
+ public static abstract @java.lang.SuppressWarnings("all") class ChildBuilder<T, C extends SuperBuilderSingularToBuilderGuava.Child<T>, B extends SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, C, B>> extends Parent.ParentBuilder<T, C, B> {
+ private @java.lang.SuppressWarnings("all") double field3;
+ public ChildBuilder() {
+ super();
+ }
+ protected @java.lang.Override @java.lang.SuppressWarnings("all") B $fillValuesFrom(final C instance) {
+ super.$fillValuesFrom(instance);
+ SuperBuilderSingularToBuilderGuava.Child.ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
+ return self();
+ }
+ private static @java.lang.SuppressWarnings("all") <T>void $fillValuesFromInstanceIntoBuilder(final SuperBuilderSingularToBuilderGuava.Child<T> instance, final SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, ?, ?> b) {
+ b.field3(instance.field3);
+ }
+ protected abstract @java.lang.Override @java.lang.SuppressWarnings("all") B self();
+ public abstract @java.lang.Override @java.lang.SuppressWarnings("all") C build();
+ /**
+ * @return {@code this}.
+ */
+ public @java.lang.SuppressWarnings("all") B field3(final double field3) {
+ this.field3 = field3;
+ return self();
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
+ return (((("SuperBuilderSingularToBuilderGuava.Child.ChildBuilder(super=" + super.toString()) + ", field3=") + this.field3) + ")");
+ }
+ }
+ private static final @java.lang.SuppressWarnings("all") class ChildBuilderImpl<T> extends SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, SuperBuilderSingularToBuilderGuava.Child<T>, SuperBuilderSingularToBuilderGuava.Child.ChildBuilderImpl<T>> {
+ private ChildBuilderImpl() {
+ super();
+ }
+ protected @java.lang.Override @java.lang.SuppressWarnings("all") SuperBuilderSingularToBuilderGuava.Child.ChildBuilderImpl<T> self() {
+ return this;
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") SuperBuilderSingularToBuilderGuava.Child<T> build() {
+ return new SuperBuilderSingularToBuilderGuava.Child<T>(this);
+ }
+ }
+ private double field3;
+ protected @java.lang.SuppressWarnings("all") Child(final SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, ?, ?> b) {
+ super(b);
+ this.field3 = b.field3;
+ }
+ public @java.lang.SuppressWarnings("all") SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, ?, ?> toBuilder() {
+ return new SuperBuilderSingularToBuilderGuava.Child.ChildBuilderImpl<T>().$fillValuesFrom(this);
+ }
+ public static @java.lang.SuppressWarnings("all") <T>SuperBuilderSingularToBuilderGuava.Child.ChildBuilder<T, ?, ?> builder() {
+ return new SuperBuilderSingularToBuilderGuava.Child.ChildBuilderImpl<T>();
+ }
+ }
+ public SuperBuilderSingularToBuilderGuava() {
+ super();
+ }
+ public static void test() {
+ Child<Integer> x = Child.<Integer>builder().card(1).build().toBuilder().build();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/before/SuperBuilderSingularToBuilderGuava.java b/test/transform/resource/before/SuperBuilderSingularToBuilderGuava.java
new file mode 100644
index 00000000..7e5b51f2
--- /dev/null
+++ b/test/transform/resource/before/SuperBuilderSingularToBuilderGuava.java
@@ -0,0 +1,19 @@
+public class SuperBuilderSingularToBuilderGuava {
+ @lombok.experimental.SuperBuilder(toBuilder=true)
+ public static class Parent<T> {
+ @lombok.Singular private com.google.common.collect.ImmutableList<T> cards;
+ @lombok.Singular private com.google.common.collect.ImmutableCollection<? extends Number> frogs;
+ @SuppressWarnings("all") @lombok.Singular("rawSet") private com.google.common.collect.ImmutableSet rawSet;
+ @lombok.Singular private com.google.common.collect.ImmutableSortedSet<String> passes;
+ @lombok.Singular private com.google.common.collect.ImmutableTable<? extends Number, ? extends Number, String> users;
+ }
+
+ @lombok.experimental.SuperBuilder(toBuilder=true)
+ public static class Child<T> extends Parent<T> {
+ private double field3;
+ }
+
+ public static void test() {
+ Child<Integer> x = Child.<Integer>builder().card(1).build().toBuilder().build();
+ }
+}