aboutsummaryrefslogtreecommitdiff
path: root/test/transform/resource/after-delombok/SuperBuilderWithDefaults.java
blob: 7b6b45789b3a650866856587ad95b38d98edad3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import java.util.List;
public class SuperBuilderWithDefaults {
	public static class Parent<N extends Number> {
		private long millis = System.currentTimeMillis();
		private N numberField = null;
		@java.lang.SuppressWarnings("all")
		public static abstract class ParentBuilder<N extends Number, C extends Parent<N>, B extends ParentBuilder<N, C, B>> {
			@java.lang.SuppressWarnings("all")
			private boolean millis$set;
			@java.lang.SuppressWarnings("all")
			private long millis;
			@java.lang.SuppressWarnings("all")
			private boolean numberField$set;
			@java.lang.SuppressWarnings("all")
			private N numberField;
			@java.lang.SuppressWarnings("all")
			protected abstract B self();
			@java.lang.SuppressWarnings("all")
			public abstract C build();
			@java.lang.SuppressWarnings("all")
			public B millis(final long millis) {
				this.millis = millis;
				millis$set = true;
				return self();
			}
			@java.lang.SuppressWarnings("all")
			public B numberField(final N numberField) {
				this.numberField = numberField;
				numberField$set = true;
				return self();
			}
			@java.lang.Override
			@java.lang.SuppressWarnings("all")
			public java.lang.String toString() {
				return "SuperBuilderWithDefaults.Parent.ParentBuilder(millis=" + this.millis + ", numberField=" + this.numberField + ")";
			}
		}
		@java.lang.SuppressWarnings("all")
		private static final class ParentBuilderImpl<N extends Number> extends ParentBuilder<N, Parent<N>, ParentBuilderImpl<N>> {
			@java.lang.SuppressWarnings("all")
			private ParentBuilderImpl() {
			}
			@java.lang.Override
			@java.lang.SuppressWarnings("all")
			protected ParentBuilderImpl self() {
				return this;
			}
			@java.lang.Override
			@java.lang.SuppressWarnings("all")
			public Parent<N> build() {
				return new Parent<N>(this);
			}
		}
		@java.lang.SuppressWarnings("all")
		protected Parent(final ParentBuilder<N, ?, ?> b) {
			if (b.millis$set) this.millis = b.millis;
			if (b.numberField$set) this.numberField = b.numberField;
		}
		@java.lang.SuppressWarnings("all")
		public static <N extends Number> ParentBuilder<N, ?, ?> builder() {
			return new ParentBuilderImpl<N>();
		}
	}
	public static class Child extends Parent<Integer> {
		private double doubleField = Math.PI;
		@java.lang.SuppressWarnings("all")
		public static abstract class ChildBuilder<C extends Child, B extends ChildBuilder<C, B>> extends Parent.ParentBuilder<Integer, C, B> {
			@java.lang.SuppressWarnings("all")
			private boolean doubleField$set;
			@java.lang.SuppressWarnings("all")
			private double doubleField;
			@java.lang.Override
			@java.lang.SuppressWarnings("all")
			protected abstract B self();
			@java.lang.Override
			@java.lang.SuppressWarnings("all")
			public abstract C build();
			@java.lang.SuppressWarnings("all")
			public B doubleField(final double doubleField) {
				this.doubleField = doubleField;
				doubleField$set = true;
				return self();
			}
			@java.lang.Override
			@java.lang.SuppressWarnings("all")
			public java.lang.String toString() {
				return "SuperBuilderWithDefaults.Child.ChildBuilder(super=" + super.toString() + ", doubleField=" + this.doubleField + ")";
			}
		}
		@java.lang.SuppressWarnings("all")
		private static final class ChildBuilderImpl extends ChildBuilder<Child, ChildBuilderImpl> {
			@java.lang.SuppressWarnings("all")
			private ChildBuilderImpl() {
			}
			@java.lang.Override
			@java.lang.SuppressWarnings("all")
			protected ChildBuilderImpl self() {
				return this;
			}
			@java.lang.Override
			@java.lang.SuppressWarnings("all")
			public Child build() {
				return new Child(this);
			}
		}
		@java.lang.SuppressWarnings("all")
		protected Child(final ChildBuilder<?, ?> b) {
			super(b);
			if (b.doubleField$set) this.doubleField = b.doubleField;
		}
		@java.lang.SuppressWarnings("all")
		public static ChildBuilder<?, ?> builder() {
			return new ChildBuilderImpl();
		}
	}
	public static void test() {
		Child x = Child.builder().doubleField(0.1).numberField(5).millis(1234567890L).build();
	}
}