diff options
author | Reinier Zwitserloot <r.zwitserloot@projectlombok.org> | 2019-05-01 05:45:10 +0200 |
---|---|---|
committer | Reinier Zwitserloot <r.zwitserloot@projectlombok.org> | 2019-05-01 05:45:10 +0200 |
commit | 2335f251665d43b4c8cebe00b980f07ef33bdb17 (patch) | |
tree | 7ae9ddf76e3a140081d002e0ef985ee72e6f33e1 /test | |
parent | bf0499263b05e11fdd43886df3dc5663c8fee5f4 (diff) | |
download | lombok-2335f251665d43b4c8cebe00b980f07ef33bdb17.tar.gz lombok-2335f251665d43b4c8cebe00b980f07ef33bdb17.tar.bz2 lombok-2335f251665d43b4c8cebe00b980f07ef33bdb17.zip |
[fixes #2104] superbuilder + non-list-singulars wouldn’t work due to hardcoded call to emptyList.
Diffstat (limited to 'test')
3 files changed, 77 insertions, 42 deletions
diff --git a/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java index deb5a223..af67e900 100644 --- a/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java @@ -1,14 +1,16 @@ -import java.util.List;
+import java.util.Map;
public class SuperBuilderWithGenericsAndToBuilder {
public static class Parent<A> {
A field1;
- List<String> items;
+ Map<Integer, String> items;
@java.lang.SuppressWarnings("all")
public static abstract class ParentBuilder<A, C extends Parent<A>, B extends ParentBuilder<A, C, B>> {
@java.lang.SuppressWarnings("all")
private A field1;
@java.lang.SuppressWarnings("all")
- private java.util.ArrayList<String> items;
+ private java.util.ArrayList<Integer> items$key;
+ @java.lang.SuppressWarnings("all")
+ private java.util.ArrayList<String> items$value;
@java.lang.SuppressWarnings("all")
protected B $fillValuesFrom(final C instance) {
ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
@@ -17,7 +19,7 @@ public class SuperBuilderWithGenericsAndToBuilder { @java.lang.SuppressWarnings("all")
private static <A> void $fillValuesFromInstanceIntoBuilder(final Parent<A> instance, final ParentBuilder<A, ?, ?> b) {
b.field1(instance.field1);
- b.items(instance.items == null ? java.util.Collections.emptyList() : instance.items);
+ b.items(instance.items == null ? java.util.Collections.emptyMap() : instance.items);
}
@java.lang.SuppressWarnings("all")
protected abstract B self();
@@ -29,26 +31,39 @@ public class SuperBuilderWithGenericsAndToBuilder { return self();
}
@java.lang.SuppressWarnings("all")
- public B item(final String item) {
- if (this.items == null) this.items = new java.util.ArrayList<String>();
- this.items.add(item);
+ public B item(final Integer itemKey, final String itemValue) {
+ if (this.items$key == null) {
+ this.items$key = new java.util.ArrayList<Integer>();
+ this.items$value = new java.util.ArrayList<String>();
+ }
+ this.items$key.add(itemKey);
+ this.items$value.add(itemValue);
return self();
}
@java.lang.SuppressWarnings("all")
- public B items(final java.util.Collection<? extends String> items) {
- if (this.items == null) this.items = new java.util.ArrayList<String>();
- this.items.addAll(items);
+ public B items(final java.util.Map<? extends Integer, ? extends String> items) {
+ if (this.items$key == null) {
+ this.items$key = new java.util.ArrayList<Integer>();
+ this.items$value = new java.util.ArrayList<String>();
+ }
+ for (final java.util.Map.Entry<? extends Integer, ? extends String> $lombokEntry : items.entrySet()) {
+ this.items$key.add($lombokEntry.getKey());
+ this.items$value.add($lombokEntry.getValue());
+ }
return self();
}
@java.lang.SuppressWarnings("all")
public B clearItems() {
- if (this.items != null) this.items.clear();
+ if (this.items$key != null) {
+ this.items$key.clear();
+ this.items$value.clear();
+ }
return self();
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
public java.lang.String toString() {
- return "SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")";
+ return "SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder(field1=" + this.field1 + ", items$key=" + this.items$key + ", items$value=" + this.items$value + ")";
}
}
@java.lang.SuppressWarnings("all")
@@ -70,16 +85,18 @@ public class SuperBuilderWithGenericsAndToBuilder { @java.lang.SuppressWarnings("all")
protected Parent(final ParentBuilder<A, ?, ?> b) {
this.field1 = b.field1;
- java.util.List<String> items;
- switch (b.items == null ? 0 : b.items.size()) {
+ java.util.Map<Integer, String> items;
+ switch (b.items$key == null ? 0 : b.items$key.size()) {
case 0:
- items = java.util.Collections.emptyList();
+ items = java.util.Collections.emptyMap();
break;
case 1:
- items = java.util.Collections.singletonList(b.items.get(0));
+ items = java.util.Collections.singletonMap(b.items$key.get(0), b.items$value.get(0));
break;
default:
- items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
+ items = new java.util.LinkedHashMap<Integer, String>(b.items$key.size() < 1073741824 ? 1 + b.items$key.size() + (b.items$key.size() - 3) / 3 : java.lang.Integer.MAX_VALUE);
+ for (int $i = 0; $i < b.items$key.size(); $i++) items.put(b.items$key.get($i), (String) b.items$value.get($i));
+ items = java.util.Collections.unmodifiableMap(items);
}
this.items = items;
}
@@ -157,6 +174,6 @@ public class SuperBuilderWithGenericsAndToBuilder { }
}
public static void test() {
- Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item("").build().toBuilder().build();
+ Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item(5, "").build().toBuilder().build();
}
}
diff --git a/test/transform/resource/after-ecj/SuperBuilderWithGenericsAndToBuilder.java b/test/transform/resource/after-ecj/SuperBuilderWithGenericsAndToBuilder.java index 107ee362..ce960d61 100644 --- a/test/transform/resource/after-ecj/SuperBuilderWithGenericsAndToBuilder.java +++ b/test/transform/resource/after-ecj/SuperBuilderWithGenericsAndToBuilder.java @@ -1,9 +1,10 @@ -import java.util.List;
+import java.util.Map;
public class SuperBuilderWithGenericsAndToBuilder {
public static @lombok.experimental.SuperBuilder(toBuilder = true) class Parent<A> {
public static abstract @java.lang.SuppressWarnings("all") class ParentBuilder<A, C extends Parent<A>, B extends ParentBuilder<A, C, B>> {
private @java.lang.SuppressWarnings("all") A field1;
- private @java.lang.SuppressWarnings("all") java.util.ArrayList<String> items;
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<Integer> items$key;
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<String> items$value;
public ParentBuilder() {
super();
}
@@ -13,7 +14,7 @@ public class SuperBuilderWithGenericsAndToBuilder { }
private static @java.lang.SuppressWarnings("all") <A>void $fillValuesFromInstanceIntoBuilder(final Parent<A> instance, final ParentBuilder<A, ?, ?> b) {
b.field1(instance.field1);
- b.items(((instance.items == null) ? java.util.Collections.emptyList() : instance.items));
+ b.items(((instance.items == null) ? java.util.Collections.emptyMap() : instance.items));
}
protected abstract @java.lang.SuppressWarnings("all") B self();
public abstract @java.lang.SuppressWarnings("all") C build();
@@ -21,25 +22,39 @@ public class SuperBuilderWithGenericsAndToBuilder { this.field1 = field1;
return self();
}
- public @java.lang.SuppressWarnings("all") B item(final String item) {
- if ((this.items == null))
- this.items = new java.util.ArrayList<String>();
- this.items.add(item);
+ public @java.lang.SuppressWarnings("all") B item(final Integer itemKey, final String itemValue) {
+ if ((this.items$key == null))
+ {
+ this.items$key = new java.util.ArrayList<Integer>();
+ this.items$value = new java.util.ArrayList<String>();
+ }
+ this.items$key.add(itemKey);
+ this.items$value.add(itemValue);
return self();
}
- public @java.lang.SuppressWarnings("all") B items(final java.util.Collection<? extends String> items) {
- if ((this.items == null))
- this.items = new java.util.ArrayList<String>();
- this.items.addAll(items);
+ public @java.lang.SuppressWarnings("all") B items(final java.util.Map<? extends Integer, ? extends String> items) {
+ if ((this.items$key == null))
+ {
+ this.items$key = new java.util.ArrayList<Integer>();
+ this.items$value = new java.util.ArrayList<String>();
+ }
+ for (java.util.Map.Entry<? extends Integer, ? extends String> $lombokEntry : items.entrySet())
+ {
+ this.items$key.add($lombokEntry.getKey());
+ this.items$value.add($lombokEntry.getValue());
+ }
return self();
}
public @java.lang.SuppressWarnings("all") B clearItems() {
- if ((this.items != null))
- this.items.clear();
+ if ((this.items$key != null))
+ {
+ this.items$key.clear();
+ this.items$value.clear();
+ }
return self();
}
public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
- return (((("SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder(field1=" + this.field1) + ", items=") + this.items) + ")");
+ return (((((("SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder(field1=" + this.field1) + ", items$key=") + this.items$key) + ", items$value=") + this.items$value) + ")");
}
}
private static final @java.lang.SuppressWarnings("all") class ParentBuilderImpl<A> extends ParentBuilder<A, Parent<A>, ParentBuilderImpl<A>> {
@@ -54,20 +69,23 @@ public class SuperBuilderWithGenericsAndToBuilder { }
}
A field1;
- @lombok.Singular List<String> items;
+ @lombok.Singular Map<Integer, String> items;
protected @java.lang.SuppressWarnings("all") Parent(final ParentBuilder<A, ?, ?> b) {
super();
this.field1 = b.field1;
- java.util.List<String> items;
- switch (((b.items == null) ? 0 : b.items.size())) {
+ java.util.Map<Integer, String> items;
+ switch (((b.items$key == null) ? 0 : b.items$key.size())) {
case 0 :
- items = java.util.Collections.emptyList();
+ items = java.util.Collections.emptyMap();
break;
case 1 :
- items = java.util.Collections.singletonList(b.items.get(0));
+ items = java.util.Collections.singletonMap(b.items$key.get(0), b.items$value.get(0));
break;
default :
- items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
+ items = new java.util.LinkedHashMap<Integer, String>(((b.items$key.size() < 0x40000000) ? ((1 + b.items$key.size()) + ((b.items$key.size() - 3) / 3)) : java.lang.Integer.MAX_VALUE));
+ for (int $i = 0;; ($i < b.items$key.size()); $i ++)
+ items.put(b.items$key.get($i), b.items$value.get($i));
+ items = java.util.Collections.unmodifiableMap(items);
}
this.items = items;
}
@@ -129,6 +147,6 @@ public class SuperBuilderWithGenericsAndToBuilder { super();
}
public static void test() {
- Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item("").build().toBuilder().build();
+ Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item(5, "").build().toBuilder().build();
}
}
diff --git a/test/transform/resource/before/SuperBuilderWithGenericsAndToBuilder.java b/test/transform/resource/before/SuperBuilderWithGenericsAndToBuilder.java index dae68034..1f2caf6d 100644 --- a/test/transform/resource/before/SuperBuilderWithGenericsAndToBuilder.java +++ b/test/transform/resource/before/SuperBuilderWithGenericsAndToBuilder.java @@ -1,10 +1,10 @@ -import java.util.List; +import java.util.Map; public class SuperBuilderWithGenericsAndToBuilder { @lombok.experimental.SuperBuilder(toBuilder = true) public static class Parent<A> { A field1; - @lombok.Singular List<String> items; + @lombok.Singular Map<Integer, String> items; } @lombok.experimental.SuperBuilder(toBuilder = true) @@ -13,6 +13,6 @@ public class SuperBuilderWithGenericsAndToBuilder { } public static void test() { - Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item("").build().toBuilder().build(); + Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item(5, "").build().toBuilder().build(); } } |