[lombok] IDEA-341962 IDEA-301474 improve delombok of SuperBuilder with Builder.Defaults

GitOrigin-RevId: dd3c7ae0bd7ee5168b669228e106c9741218ee24
This commit is contained in:
Michail Plushnikov
2023-12-29 19:54:30 +01:00
committed by intellij-monorepo-bot
parent 01d336719b
commit 4cf257adaa
9 changed files with 94 additions and 6 deletions

View File

@@ -0,0 +1,55 @@
import java.util.ArrayList;
import java.util.List;
public class SuperBuilderWithBuilderDefault {
private List<String> listItems = new ArrayList<>();
protected SuperBuilderWithBuilderDefault(SuperBuilderWithBuilderDefault.SuperBuilderWithBuilderDefaultBuilder<?, ?> b) {
if (b.listItems$set) {
this.listItems = b.listItems$value;
} else {
this.listItems = $default$listItems();
}
}
private static List<String> $default$listItems() {
return new ArrayList<>();
}
public static SuperBuilderWithBuilderDefaultBuilder<?, ?> builder() {
return new SuperBuilderWithBuilderDefaultBuilderImpl();
}
public static abstract class SuperBuilderWithBuilderDefaultBuilder<C extends SuperBuilderWithBuilderDefault, B extends SuperBuilderWithBuilderDefaultBuilder<C, B>> {
private List<String> listItems$value;
private boolean listItems$set;
public B listItems(List<String> listItems) {
this.listItems$value = listItems;
this.listItems$set = true;
return self();
}
protected abstract B self();
public abstract C build();
public String toString() {
return "SuperBuilderWithBuilderDefault.SuperBuilderWithBuilderDefaultBuilder(listItems$value=" + this.listItems$value + ")";
}
}
private static final class SuperBuilderWithBuilderDefaultBuilderImpl extends SuperBuilderWithBuilderDefaultBuilder<SuperBuilderWithBuilderDefault, SuperBuilderWithBuilderDefaultBuilderImpl> {
private SuperBuilderWithBuilderDefaultBuilderImpl() {
}
protected SuperBuilderWithBuilderDefaultBuilderImpl self() {
return this;
}
public SuperBuilderWithBuilderDefault build() {
return new SuperBuilderWithBuilderDefault(this);
}
}
}

View File

@@ -0,0 +1,10 @@
import java.util.ArrayList;
import java.util.List;
@lombok.experimental.SuperBuilder
public class SuperBuilderWithBuilderDefault {
<caret>
@lombok.Builder.Default
private List<String> listItems = new ArrayList<>();
}