diff options
Diffstat (limited to 'test/transform/resource/after-delombok')
116 files changed, 3643 insertions, 2135 deletions
| diff --git a/test/transform/resource/after-delombok/Accessors.java b/test/transform/resource/after-delombok/Accessors.java index 2773a17b..0e148b88 100644 --- a/test/transform/resource/after-delombok/Accessors.java +++ b/test/transform/resource/after-delombok/Accessors.java @@ -4,6 +4,9 @@ class AccessorsFluent {  	public String fieldName() {  		return this.fieldName;  	} +	/** +	 * @return {@code this}. +	 */  	@java.lang.SuppressWarnings("all")  	public AccessorsFluent fieldName(final String fieldName) {  		this.fieldName = fieldName; @@ -21,6 +24,9 @@ class AccessorsFluentOnClass {  	public String getOtherFieldWithOverride() {  		return this.otherFieldWithOverride;  	} +	/** +	 * @return {@code this}. +	 */  	@java.lang.SuppressWarnings("all")  	public AccessorsFluentOnClass fieldName(final String fieldName) {  		this.fieldName = fieldName; @@ -29,6 +35,9 @@ class AccessorsFluentOnClass {  }  class AccessorsChain {  	private boolean isRunning; +	/** +	 * @return {@code this}. +	 */  	@java.lang.SuppressWarnings("all")  	public AccessorsChain setRunning(final boolean isRunning) {  		this.isRunning = isRunning; @@ -93,6 +102,9 @@ class AccessorsPrefix3 {  }  class AccessorsFluentGenerics<T extends Number> {  	private String name; +	/** +	 * @return {@code this}. +	 */  	@java.lang.SuppressWarnings("all")  	public AccessorsFluentGenerics<T> name(final String name) {  		this.name = name; diff --git a/test/transform/resource/after-delombok/AccessorsConfiguration.java b/test/transform/resource/after-delombok/AccessorsConfiguration.java index f6604970..f52ff307 100644 --- a/test/transform/resource/after-delombok/AccessorsConfiguration.java +++ b/test/transform/resource/after-delombok/AccessorsConfiguration.java @@ -18,6 +18,9 @@ class AccessorsConfiguration2 {  }  class AccessorsConfiguration3 {  	private String fFieldName = ""; +	/** +	 * @return {@code this}. +	 */  	@java.lang.SuppressWarnings("all")  	public AccessorsConfiguration3 setFieldName(final String fFieldName) {  		this.fFieldName = fFieldName; diff --git a/test/transform/resource/after-delombok/BuilderAccessWithGetter.java b/test/transform/resource/after-delombok/BuilderAccessWithGetter.java new file mode 100644 index 00000000..f36403bf --- /dev/null +++ b/test/transform/resource/after-delombok/BuilderAccessWithGetter.java @@ -0,0 +1,49 @@ +public final class BuilderAccessWithGetter { +    private final String string; + +    @java.lang.SuppressWarnings("all") +    BuilderAccessWithGetter(final String string) { +        this.string = string; +    } + + +    @java.lang.SuppressWarnings("all") +    private static class BuilderAccessWithGetterBuilder { +        @java.lang.SuppressWarnings("all") +        private String string; + +        @java.lang.SuppressWarnings("all") +        BuilderAccessWithGetterBuilder() { +        } + +        /** +         * @return {@code this}. +         */ +        @java.lang.SuppressWarnings("all") +        private BuilderAccessWithGetter.BuilderAccessWithGetterBuilder string(final String string) { +            this.string = string; +            return this; +        } + +        @java.lang.SuppressWarnings("all") +        private BuilderAccessWithGetter build() { +            return new BuilderAccessWithGetter(this.string); +        } + +        @java.lang.Override +        @java.lang.SuppressWarnings("all") +        public java.lang.String toString() { +            return "BuilderAccessWithGetter.BuilderAccessWithGetterBuilder(string=" + this.string + ")"; +        } +    } + +    @java.lang.SuppressWarnings("all") +    private static BuilderAccessWithGetter.BuilderAccessWithGetterBuilder builder() { +        return new BuilderAccessWithGetter.BuilderAccessWithGetterBuilder(); +    } + +    @java.lang.SuppressWarnings("all") +    public String getString() { +        return this.string; +    } +} diff --git a/test/transform/resource/after-delombok/BuilderComplex.java b/test/transform/resource/after-delombok/BuilderComplex.java index 009ebe6c..591c2b4d 100644 --- a/test/transform/resource/after-delombok/BuilderComplex.java +++ b/test/transform/resource/after-delombok/BuilderComplex.java @@ -15,21 +15,33 @@ class BuilderComplex {  		@java.lang.SuppressWarnings("all")  		TestVoidName() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderComplex.TestVoidName<T> number(final T number) {  			this.number = number;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderComplex.TestVoidName<T> arg2(final int arg2) {  			this.arg2 = arg2;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderComplex.TestVoidName<T> arg3(final String arg3) {  			this.arg3 = arg3;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderComplex.TestVoidName<T> selfRef(final BuilderComplex selfRef) {  			this.selfRef = selfRef; diff --git a/test/transform/resource/after-delombok/BuilderCustomName.java b/test/transform/resource/after-delombok/BuilderCustomName.java index 4b423ee0..2e5924d3 100644 --- a/test/transform/resource/after-delombok/BuilderCustomName.java +++ b/test/transform/resource/after-delombok/BuilderCustomName.java @@ -9,6 +9,9 @@ class BuilderCustomName<T> {  		protected abstract B self();  		@java.lang.SuppressWarnings("all")  		public abstract C build(); +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public B field(final int field) {  			this.field = field; diff --git a/test/transform/resource/after-delombok/BuilderDefaults.java b/test/transform/resource/after-delombok/BuilderDefaults.java index 42b751ce..2170eed5 100644 --- a/test/transform/resource/after-delombok/BuilderDefaults.java +++ b/test/transform/resource/after-delombok/BuilderDefaults.java @@ -31,17 +31,26 @@ public final class BuilderDefaults {  		@java.lang.SuppressWarnings("all")  		BuilderDefaultsBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderDefaults.BuilderDefaultsBuilder x(final int x) {  			this.x$value = x;  			x$set = true;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderDefaults.BuilderDefaultsBuilder name(final String name) {  			this.name = name;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderDefaults.BuilderDefaultsBuilder z(final long z) {  			this.z$value = z; diff --git a/test/transform/resource/after-delombok/BuilderDefaultsGenerics.java b/test/transform/resource/after-delombok/BuilderDefaultsGenerics.java index 71dc7c5f..44d9491f 100644 --- a/test/transform/resource/after-delombok/BuilderDefaultsGenerics.java +++ b/test/transform/resource/after-delombok/BuilderDefaultsGenerics.java @@ -38,18 +38,27 @@ public class BuilderDefaultsGenerics<N extends Number, T, R extends List<T>> {  		@java.lang.SuppressWarnings("all")  		BuilderDefaultsGenericsBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderDefaultsGenerics.BuilderDefaultsGenericsBuilder<N, T, R> callable(final java.util.concurrent.Callable<N> callable) {  			this.callable$value = callable;  			callable$set = true;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderDefaultsGenerics.BuilderDefaultsGenericsBuilder<N, T, R> tee(final T tee) {  			this.tee$value = tee;  			tee$set = true;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderDefaultsGenerics.BuilderDefaultsGenericsBuilder<N, T, R> arrr(final R arrr) {  			this.arrr$value = arrr; diff --git a/test/transform/resource/after-delombok/BuilderDefaultsWarnings.java b/test/transform/resource/after-delombok/BuilderDefaultsWarnings.java index 356e072e..c7e37abe 100644 --- a/test/transform/resource/after-delombok/BuilderDefaultsWarnings.java +++ b/test/transform/resource/after-delombok/BuilderDefaultsWarnings.java @@ -1,6 +1,4 @@  //skip-idempotent -import lombok.Builder; -@Builder  public class BuilderDefaultsWarnings {  	long x = System.currentTimeMillis();  	final int y = 5; @@ -23,11 +21,17 @@ public class BuilderDefaultsWarnings {  		@java.lang.SuppressWarnings("all")  		BuilderDefaultsWarningsBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderDefaultsWarnings.BuilderDefaultsWarningsBuilder x(final long x) {  			this.x = x;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderDefaultsWarnings.BuilderDefaultsWarningsBuilder z(final int z) {  			this.z = z; @@ -81,7 +85,6 @@ public class BuilderDefaultsWarnings {  }  class NoBuilderButHasDefaults {  	private final long z = 5; -	@Builder  	public NoBuilderButHasDefaults() {  	}  	@java.lang.SuppressWarnings("all") diff --git a/test/transform/resource/after-delombok/BuilderGenericMethod.java b/test/transform/resource/after-delombok/BuilderGenericMethod.java index d57f6415..36375952 100644 --- a/test/transform/resource/after-delombok/BuilderGenericMethod.java +++ b/test/transform/resource/after-delombok/BuilderGenericMethod.java @@ -13,11 +13,17 @@ class BuilderGenericMethod<T> {  		@java.lang.SuppressWarnings("all")  		MapBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderGenericMethod<T>.MapBuilder<N> a(final int a) {  			this.a = a;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderGenericMethod<T>.MapBuilder<N> b(final long b) {  			this.b = b; diff --git a/test/transform/resource/after-delombok/BuilderInstanceMethod.java b/test/transform/resource/after-delombok/BuilderInstanceMethod.java index d0d5833f..2ee81dcb 100644 --- a/test/transform/resource/after-delombok/BuilderInstanceMethod.java +++ b/test/transform/resource/after-delombok/BuilderInstanceMethod.java @@ -16,21 +16,33 @@ class BuilderInstanceMethod<T> {  		@java.lang.SuppressWarnings("all")  		StringBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderInstanceMethod<T>.StringBuilder show(final int show) {  			this.show = show;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderInstanceMethod<T>.StringBuilder yes(final int yes) {  			this.yes = yes;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderInstanceMethod<T>.StringBuilder also(final List<T> also) {  			this.also = also;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderInstanceMethod<T>.StringBuilder $andMe(final int $andMe) {  			this.$andMe = $andMe; diff --git a/test/transform/resource/after-delombok/BuilderJavadoc.java b/test/transform/resource/after-delombok/BuilderJavadoc.java index c99bfe90..f7caa2d6 100644 --- a/test/transform/resource/after-delombok/BuilderJavadoc.java +++ b/test/transform/resource/after-delombok/BuilderJavadoc.java @@ -3,7 +3,6 @@ class BuilderJavadoc<T> {  	/**  	 * basic gets only a builder setter.  	 * @see #getsetwith -	 *  	 * @return tag is removed from the setter.  	 */  	private final int basic; @@ -92,7 +91,6 @@ class BuilderJavadoc<T> {  	}  	/**  	 * getsetwith gets a builder setter, an instance getter and setter, and a wither. -	 *  	 * @return tag is moved to the getter.  	 */  	@java.lang.SuppressWarnings("all") diff --git a/test/transform/resource/after-delombok/BuilderSimple.java b/test/transform/resource/after-delombok/BuilderSimple.java index 925d0dd3..a43567b3 100644 --- a/test/transform/resource/after-delombok/BuilderSimple.java +++ b/test/transform/resource/after-delombok/BuilderSimple.java @@ -18,11 +18,17 @@ class BuilderSimple<T> {  		@java.lang.SuppressWarnings("all")  		BuilderSimpleBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderSimple.BuilderSimpleBuilder<T> yes(final int yes) {  			this.yes = yes;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderSimple.BuilderSimpleBuilder<T> also(final List<T> also) {  			this.also = also; diff --git a/test/transform/resource/after-delombok/BuilderSimpleWithSetterPrefix.java b/test/transform/resource/after-delombok/BuilderSimpleWithSetterPrefix.java index ef0d8fc6..3038fe39 100644 --- a/test/transform/resource/after-delombok/BuilderSimpleWithSetterPrefix.java +++ b/test/transform/resource/after-delombok/BuilderSimpleWithSetterPrefix.java @@ -12,6 +12,9 @@ class BuilderSimpleWithSetterPrefix<T> {  		@java.lang.SuppressWarnings("all")  		BuilderSimpleWithSetterPrefixBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderSimpleWithSetterPrefix.BuilderSimpleWithSetterPrefixBuilder<T> withUnprefixed(final int unprefixed) {  			this.unprefixed = unprefixed; diff --git a/test/transform/resource/after-delombok/BuilderSingularAnnotatedTypes.java b/test/transform/resource/after-delombok/BuilderSingularAnnotatedTypes.java index f6fa22de..7568d812 100644 --- a/test/transform/resource/after-delombok/BuilderSingularAnnotatedTypes.java +++ b/test/transform/resource/after-delombok/BuilderSingularAnnotatedTypes.java @@ -1,3 +1,4 @@ +//version 8:  import java.lang.annotation.ElementType;  import java.lang.annotation.Target;  import java.util.Set; diff --git a/test/transform/resource/after-delombok/BuilderSingularAnnotatedTypesWithSetterPrefix.java b/test/transform/resource/after-delombok/BuilderSingularAnnotatedTypesWithSetterPrefix.java index 6dbbeee4..d58caf4d 100644 --- a/test/transform/resource/after-delombok/BuilderSingularAnnotatedTypesWithSetterPrefix.java +++ b/test/transform/resource/after-delombok/BuilderSingularAnnotatedTypesWithSetterPrefix.java @@ -1,3 +1,4 @@ +//version 8:  import java.lang.annotation.ElementType;  import java.lang.annotation.Target;  import java.util.Set; diff --git a/test/transform/resource/after-delombok/BuilderSingularNoAuto.java b/test/transform/resource/after-delombok/BuilderSingularNoAuto.java index 8c30f926..de86383f 100644 --- a/test/transform/resource/after-delombok/BuilderSingularNoAuto.java +++ b/test/transform/resource/after-delombok/BuilderSingularNoAuto.java @@ -1,6 +1,5 @@  //skip-idempotent  import java.util.List; -@lombok.Builder  class BuilderSingularNoAuto {  	private List<String> things;  	private List<String> widgets; diff --git a/test/transform/resource/after-delombok/BuilderSingularNoAutoWithSetterPrefix.java b/test/transform/resource/after-delombok/BuilderSingularNoAutoWithSetterPrefix.java index 4207cf74..8858f145 100644 --- a/test/transform/resource/after-delombok/BuilderSingularNoAutoWithSetterPrefix.java +++ b/test/transform/resource/after-delombok/BuilderSingularNoAutoWithSetterPrefix.java @@ -1,6 +1,5 @@  //skip-idempotent  import java.util.List; -@lombok.Builder(setterPrefix = "with")  class BuilderSingularNoAutoWithSetterPrefix {  	private List<String> things;  	private List<String> widgets; diff --git a/test/transform/resource/after-delombok/BuilderSingularNullBehavior1.java b/test/transform/resource/after-delombok/BuilderSingularNullBehavior1.java index 32ad0a68..45ff97fa 100644 --- a/test/transform/resource/after-delombok/BuilderSingularNullBehavior1.java +++ b/test/transform/resource/after-delombok/BuilderSingularNullBehavior1.java @@ -1,3 +1,4 @@ +//version 8:  import java.util.List;  import java.util.Collection;  class BuilderSingularNullBehavior1 { diff --git a/test/transform/resource/after-delombok/BuilderSingularNullBehavior2.java b/test/transform/resource/after-delombok/BuilderSingularNullBehavior2.java index e70877bf..5f605de4 100644 --- a/test/transform/resource/after-delombok/BuilderSingularNullBehavior2.java +++ b/test/transform/resource/after-delombok/BuilderSingularNullBehavior2.java @@ -1,3 +1,4 @@ +//version 8: springframework dep is too new to run on j6  import java.util.List;  class BuilderSingularNullBehavior2 {  	private List<String> locations; diff --git a/test/transform/resource/after-delombok/BuilderTypeAnnos.java b/test/transform/resource/after-delombok/BuilderTypeAnnos.java index bd450d5b..f5ef42f7 100644 --- a/test/transform/resource/after-delombok/BuilderTypeAnnos.java +++ b/test/transform/resource/after-delombok/BuilderTypeAnnos.java @@ -22,6 +22,9 @@ class BuilderTypeAnnos {  		@java.lang.SuppressWarnings("all")  		BuilderTypeAnnosBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderTypeAnnos.BuilderTypeAnnosBuilder foo(@TA final List<String> foo) {  			this.foo = foo; diff --git a/test/transform/resource/after-delombok/BuilderTypeAnnosWithSetterPrefix.java b/test/transform/resource/after-delombok/BuilderTypeAnnosWithSetterPrefix.java index b221e69d..1fb7798a 100644 --- a/test/transform/resource/after-delombok/BuilderTypeAnnosWithSetterPrefix.java +++ b/test/transform/resource/after-delombok/BuilderTypeAnnosWithSetterPrefix.java @@ -22,6 +22,9 @@ class BuilderTypeAnnosWithSetterPrefix {  		@java.lang.SuppressWarnings("all")  		BuilderTypeAnnosWithSetterPrefixBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderTypeAnnosWithSetterPrefix.BuilderTypeAnnosWithSetterPrefixBuilder withFoo(@TA final List<String> foo) {  			this.foo = foo; diff --git a/test/transform/resource/after-delombok/BuilderWithAccessors.java b/test/transform/resource/after-delombok/BuilderWithAccessors.java index 3fa47034..a8a9bc11 100644 --- a/test/transform/resource/after-delombok/BuilderWithAccessors.java +++ b/test/transform/resource/after-delombok/BuilderWithAccessors.java @@ -23,21 +23,33 @@ class BuilderWithAccessors {  		@java.lang.SuppressWarnings("all")  		BuilderWithAccessorsBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithAccessors.BuilderWithAccessorsBuilder plower(final int plower) {  			this.plower = plower;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithAccessors.BuilderWithAccessorsBuilder upper(final int upper) {  			this.upper = upper;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithAccessors.BuilderWithAccessorsBuilder foo(final int foo) {  			this.foo = foo;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithAccessors.BuilderWithAccessorsBuilder _bar(final int _bar) {  			this._bar = _bar; diff --git a/test/transform/resource/after-delombok/BuilderWithBadNames.java b/test/transform/resource/after-delombok/BuilderWithBadNames.java index d77ca71c..c96fbc58 100644 --- a/test/transform/resource/after-delombok/BuilderWithBadNames.java +++ b/test/transform/resource/after-delombok/BuilderWithBadNames.java @@ -15,11 +15,17 @@ public class BuilderWithBadNames {  		@java.lang.SuppressWarnings("all")  		BuilderWithBadNamesBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithBadNames.BuilderWithBadNamesBuilder build(final String build) {  			this.build = build;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithBadNames.BuilderWithBadNamesBuilder toString(final String toString) {  			this.toString = toString; diff --git a/test/transform/resource/after-delombok/BuilderWithDeprecated.java b/test/transform/resource/after-delombok/BuilderWithDeprecated.java index b6a09376..f0729649 100644 --- a/test/transform/resource/after-delombok/BuilderWithDeprecated.java +++ b/test/transform/resource/after-delombok/BuilderWithDeprecated.java @@ -40,6 +40,9 @@ public class BuilderWithDeprecated {  			this.dep1 = dep1;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.Deprecated  		@java.lang.SuppressWarnings("all")  		public BuilderWithDeprecated.BuilderWithDeprecatedBuilder dep2(final int dep2) { diff --git a/test/transform/resource/after-delombok/BuilderWithDeprecatedAnnOnly.java b/test/transform/resource/after-delombok/BuilderWithDeprecatedAnnOnly.java new file mode 100644 index 00000000..d5c06465 --- /dev/null +++ b/test/transform/resource/after-delombok/BuilderWithDeprecatedAnnOnly.java @@ -0,0 +1,107 @@ +import com.google.common.collect.ImmutableList; +public class BuilderWithDeprecatedAnnOnly { +	@Deprecated +	int dep1; +	@Deprecated +	java.util.List<String> strings; +	@Deprecated +	ImmutableList<Integer> numbers; +	@java.lang.SuppressWarnings("all") +	BuilderWithDeprecatedAnnOnly(final int dep1, final java.util.List<String> strings, final ImmutableList<Integer> numbers) { +		this.dep1 = dep1; +		this.strings = strings; +		this.numbers = numbers; +	} +	@java.lang.SuppressWarnings("all") +	public static class BuilderWithDeprecatedAnnOnlyBuilder { +		@java.lang.SuppressWarnings("all") +		private int dep1; +		@java.lang.SuppressWarnings("all") +		private java.util.ArrayList<String> strings; +		@java.lang.SuppressWarnings("all") +		private com.google.common.collect.ImmutableList.Builder<Integer> numbers; +		@java.lang.SuppressWarnings("all") +		BuilderWithDeprecatedAnnOnlyBuilder() { +		} +		/** +		 * @return {@code this}. +		 */ +		@java.lang.Deprecated +		@java.lang.SuppressWarnings("all") +		public BuilderWithDeprecatedAnnOnly.BuilderWithDeprecatedAnnOnlyBuilder dep1(final int dep1) { +			this.dep1 = dep1; +			return this; +		} +		@java.lang.Deprecated +		@java.lang.SuppressWarnings("all") +		public BuilderWithDeprecatedAnnOnly.BuilderWithDeprecatedAnnOnlyBuilder string(final String string) { +			if (this.strings == null) this.strings = new java.util.ArrayList<String>(); +			this.strings.add(string); +			return this; +		} +		@java.lang.Deprecated +		@java.lang.SuppressWarnings("all") +		public BuilderWithDeprecatedAnnOnly.BuilderWithDeprecatedAnnOnlyBuilder strings(final java.util.Collection<? extends String> strings) { +			if (strings == null) { +				throw new java.lang.NullPointerException("strings cannot be null"); +			} +			if (this.strings == null) this.strings = new java.util.ArrayList<String>(); +			this.strings.addAll(strings); +			return this; +		} +		@java.lang.Deprecated +		@java.lang.SuppressWarnings("all") +		public BuilderWithDeprecatedAnnOnly.BuilderWithDeprecatedAnnOnlyBuilder clearStrings() { +			if (this.strings != null) this.strings.clear(); +			return this; +		} +		@java.lang.Deprecated +		@java.lang.SuppressWarnings("all") +		public BuilderWithDeprecatedAnnOnly.BuilderWithDeprecatedAnnOnlyBuilder number(final Integer number) { +			if (this.numbers == null) this.numbers = com.google.common.collect.ImmutableList.builder(); +			this.numbers.add(number); +			return this; +		} +		@java.lang.Deprecated +		@java.lang.SuppressWarnings("all") +		public BuilderWithDeprecatedAnnOnly.BuilderWithDeprecatedAnnOnlyBuilder numbers(final java.lang.Iterable<? extends Integer> numbers) { +			if (numbers == null) { +				throw new java.lang.NullPointerException("numbers cannot be null"); +			} +			if (this.numbers == null) this.numbers = com.google.common.collect.ImmutableList.builder(); +			this.numbers.addAll(numbers); +			return this; +		} +		@java.lang.Deprecated +		@java.lang.SuppressWarnings("all") +		public BuilderWithDeprecatedAnnOnly.BuilderWithDeprecatedAnnOnlyBuilder clearNumbers() { +			this.numbers = null; +			return this; +		} +		@java.lang.SuppressWarnings("all") +		public BuilderWithDeprecatedAnnOnly build() { +			java.util.List<String> strings; +			switch (this.strings == null ? 0 : this.strings.size()) { +			case 0:  +				strings = java.util.Collections.emptyList(); +				break; +			case 1:  +				strings = java.util.Collections.singletonList(this.strings.get(0)); +				break; +			default:  +				strings = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(this.strings)); +			} +			com.google.common.collect.ImmutableList<Integer> numbers = this.numbers == null ? com.google.common.collect.ImmutableList.<Integer>of() : this.numbers.build(); +			return new BuilderWithDeprecatedAnnOnly(this.dep1, strings, numbers); +		} +		@java.lang.Override +		@java.lang.SuppressWarnings("all") +		public java.lang.String toString() { +			return "BuilderWithDeprecatedAnnOnly.BuilderWithDeprecatedAnnOnlyBuilder(dep1=" + this.dep1 + ", strings=" + this.strings + ", numbers=" + this.numbers + ")"; +		} +	} +	@java.lang.SuppressWarnings("all") +	public static BuilderWithDeprecatedAnnOnly.BuilderWithDeprecatedAnnOnlyBuilder builder() { +		return new BuilderWithDeprecatedAnnOnly.BuilderWithDeprecatedAnnOnlyBuilder(); +	} +} diff --git a/test/transform/resource/after-delombok/BuilderWithExistingBuilderClass.java b/test/transform/resource/after-delombok/BuilderWithExistingBuilderClass.java index 88eeee64..9c7ac1ad 100644 --- a/test/transform/resource/after-delombok/BuilderWithExistingBuilderClass.java +++ b/test/transform/resource/after-delombok/BuilderWithExistingBuilderClass.java @@ -13,11 +13,17 @@ class BuilderWithExistingBuilderClass<T, K extends Number> {  		@java.lang.SuppressWarnings("all")  		BuilderWithExistingBuilderClassBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithExistingBuilderClass.BuilderWithExistingBuilderClassBuilder<Z> arg1(final Z arg1) {  			this.arg1 = arg1;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithExistingBuilderClass.BuilderWithExistingBuilderClassBuilder<Z> arg3(final String arg3) {  			this.arg3 = arg3; diff --git a/test/transform/resource/after-delombok/BuilderWithExistingBuilderClassWithSetterPrefix.java b/test/transform/resource/after-delombok/BuilderWithExistingBuilderClassWithSetterPrefix.java index b1ed5fef..c7da67f8 100644 --- a/test/transform/resource/after-delombok/BuilderWithExistingBuilderClassWithSetterPrefix.java +++ b/test/transform/resource/after-delombok/BuilderWithExistingBuilderClassWithSetterPrefix.java @@ -13,11 +13,17 @@ class BuilderWithExistingBuilderClassWithSetterPrefix<T, K extends Number> {  		@java.lang.SuppressWarnings("all")  		BuilderWithExistingBuilderClassWithSetterPrefixBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithExistingBuilderClassWithSetterPrefix.BuilderWithExistingBuilderClassWithSetterPrefixBuilder<Z> withArg1(final Z arg1) {  			this.arg1 = arg1;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithExistingBuilderClassWithSetterPrefix.BuilderWithExistingBuilderClassWithSetterPrefixBuilder<Z> withArg3(final String arg3) {  			this.arg3 = arg3; diff --git a/test/transform/resource/after-delombok/BuilderWithNoBuilderMethod.java b/test/transform/resource/after-delombok/BuilderWithNoBuilderMethod.java index d555ab06..61df4427 100644 --- a/test/transform/resource/after-delombok/BuilderWithNoBuilderMethod.java +++ b/test/transform/resource/after-delombok/BuilderWithNoBuilderMethod.java @@ -11,6 +11,9 @@ class BuilderWithNoBuilderMethod {  		@java.lang.SuppressWarnings("all")  		BuilderWithNoBuilderMethodBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithNoBuilderMethod.BuilderWithNoBuilderMethodBuilder a(final String a) {  			this.a = a; diff --git a/test/transform/resource/after-delombok/BuilderWithNonNull.java b/test/transform/resource/after-delombok/BuilderWithNonNull.java index 9858d5bd..00728ea7 100644 --- a/test/transform/resource/after-delombok/BuilderWithNonNull.java +++ b/test/transform/resource/after-delombok/BuilderWithNonNull.java @@ -1,3 +1,4 @@ +//version 8:  class BuilderWithNonNull {  	@lombok.NonNull  	private final String id; @@ -15,6 +16,9 @@ class BuilderWithNonNull {  		@java.lang.SuppressWarnings("all")  		BuilderWithNonNullBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithNonNull.BuilderWithNonNullBuilder id(@lombok.NonNull final String id) {  			if (id == null) { diff --git a/test/transform/resource/after-delombok/BuilderWithNonNullWithSetterPrefix.java b/test/transform/resource/after-delombok/BuilderWithNonNullWithSetterPrefix.java index 8a27f443..f6dfed67 100644 --- a/test/transform/resource/after-delombok/BuilderWithNonNullWithSetterPrefix.java +++ b/test/transform/resource/after-delombok/BuilderWithNonNullWithSetterPrefix.java @@ -1,3 +1,4 @@ +//version 8:  class BuilderWithNonNullWithSetterPrefix {  	@lombok.NonNull  	private final String id; @@ -15,6 +16,9 @@ class BuilderWithNonNullWithSetterPrefix {  		@java.lang.SuppressWarnings("all")  		BuilderWithNonNullWithSetterPrefixBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithNonNullWithSetterPrefix.BuilderWithNonNullWithSetterPrefixBuilder withId(@lombok.NonNull final String id) {  			if (id == null) { diff --git a/test/transform/resource/after-delombok/BuilderWithRecursiveGenerics.java b/test/transform/resource/after-delombok/BuilderWithRecursiveGenerics.java index 33dd7d10..a96fe1cc 100644 --- a/test/transform/resource/after-delombok/BuilderWithRecursiveGenerics.java +++ b/test/transform/resource/after-delombok/BuilderWithRecursiveGenerics.java @@ -19,11 +19,17 @@ public class BuilderWithRecursiveGenerics {  			@java.lang.SuppressWarnings("all")  			TestBuilder() {  			} +			/** +			 * @return {@code this}. +			 */  			@java.lang.SuppressWarnings("all")  			public BuilderWithRecursiveGenerics.Test.TestBuilder<Foo, Bar, Quz> foo(final Foo foo) {  				this.foo = foo;  				return this;  			} +			/** +			 * @return {@code this}. +			 */  			@java.lang.SuppressWarnings("all")  			public BuilderWithRecursiveGenerics.Test.TestBuilder<Foo, Bar, Quz> bar(final Bar bar) {  				this.bar = bar; diff --git a/test/transform/resource/after-delombok/BuilderWithToBuilder.java b/test/transform/resource/after-delombok/BuilderWithToBuilder.java index d98d09f6..0df43609 100644 --- a/test/transform/resource/after-delombok/BuilderWithToBuilder.java +++ b/test/transform/resource/after-delombok/BuilderWithToBuilder.java @@ -27,16 +27,25 @@ class BuilderWithToBuilder<T> {  		@java.lang.SuppressWarnings("all")  		BuilderWithToBuilderBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithToBuilder.BuilderWithToBuilderBuilder<T> one(final String one) {  			this.one = one;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithToBuilder.BuilderWithToBuilderBuilder<T> two(final String two) {  			this.two = two;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithToBuilder.BuilderWithToBuilderBuilder<T> foo(final T foo) {  			this.foo = foo; @@ -114,16 +123,25 @@ class ConstructorWithToBuilder<T> {  		@java.lang.SuppressWarnings("all")  		ConstructorWithToBuilderBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public ConstructorWithToBuilder.ConstructorWithToBuilderBuilder<T> mOne(final String mOne) {  			this.mOne = mOne;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public ConstructorWithToBuilder.ConstructorWithToBuilderBuilder<T> baz(final T baz) {  			this.baz = baz;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public ConstructorWithToBuilder.ConstructorWithToBuilderBuilder<T> bars(final com.google.common.collect.ImmutableList<T> bars) {  			this.bars = bars; @@ -147,4 +165,54 @@ class ConstructorWithToBuilder<T> {  	public ConstructorWithToBuilder.ConstructorWithToBuilderBuilder<T> toBuilder() {  		return new ConstructorWithToBuilder.ConstructorWithToBuilderBuilder<T>().mOne(this.mOne).baz(this.foo).bars(this.bars);  	} +} +class StaticMethodWithToBuilder<T> { +	private T foo; +	 +	public StaticMethodWithToBuilder(T foo) { +		this.foo = foo; +	} + +	public static <T> StaticMethodWithToBuilder<T> of(T foo) { +		return new StaticMethodWithToBuilder<T>(foo); +	} + +	@java.lang.SuppressWarnings("all") +	public static class StaticMethodWithToBuilderBuilder<T> { +		@java.lang.SuppressWarnings("all") +		private T foo; + +		@java.lang.SuppressWarnings("all") +		StaticMethodWithToBuilderBuilder() { +		} +		/** +		 * @return {@code this}. +		 */ +		@java.lang.SuppressWarnings("all") +		public StaticMethodWithToBuilder.StaticMethodWithToBuilderBuilder<T> foo(final T foo) { +			this.foo = foo; +			return this; +		} + +		@java.lang.SuppressWarnings("all") +		public StaticMethodWithToBuilder<T> build() { +			return StaticMethodWithToBuilder.<T>of(this.foo); +		} + +		@java.lang.Override +		@java.lang.SuppressWarnings("all") +		public java.lang.String toString() { +			return "StaticMethodWithToBuilder.StaticMethodWithToBuilderBuilder(foo=" + this.foo + ")"; +		} +	} + +	@java.lang.SuppressWarnings("all") +	public static <T> StaticMethodWithToBuilder.StaticMethodWithToBuilderBuilder<T> builder() { +		return new StaticMethodWithToBuilder.StaticMethodWithToBuilderBuilder<T>(); +	} + +	@java.lang.SuppressWarnings("all") +	public StaticMethodWithToBuilder.StaticMethodWithToBuilderBuilder<T> toBuilder() { +		return new StaticMethodWithToBuilder.StaticMethodWithToBuilderBuilder<T>().foo(this.foo); +	}  }
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/BuilderWithTolerate.java b/test/transform/resource/after-delombok/BuilderWithTolerate.java index daa02ac3..79494c49 100644 --- a/test/transform/resource/after-delombok/BuilderWithTolerate.java +++ b/test/transform/resource/after-delombok/BuilderWithTolerate.java @@ -14,6 +14,9 @@ public class BuilderWithTolerate {  		@java.lang.SuppressWarnings("all")  		BuilderWithTolerateBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public BuilderWithTolerate.BuilderWithTolerateBuilder value(final int value) {  			this.value = value; diff --git a/test/transform/resource/after-delombok/CheckerFrameworkBasic.java b/test/transform/resource/after-delombok/CheckerFrameworkBasic.java index 3077728c..2beafc4c 100644 --- a/test/transform/resource/after-delombok/CheckerFrameworkBasic.java +++ b/test/transform/resource/after-delombok/CheckerFrameworkBasic.java @@ -1,13 +1,8 @@ +//version 8:  class CheckerFrameworkBasic {  	private final int x;  	private final int y;  	private int z; -	@org.checkerframework.common.aliasing.qual.Unique -	@java.lang.SuppressWarnings("all") -	public CheckerFrameworkBasic(final int x, final int y) { -		this.x = x; -		this.y = y; -	}  	@org.checkerframework.dataflow.qual.Pure  	@java.lang.SuppressWarnings("all")  	public int getX() { @@ -23,7 +18,10 @@ class CheckerFrameworkBasic {  	public int getZ() {  		return this.z;  	} -	@org.checkerframework.checker.builder.qual.ReturnsReceiver +	/** +	 * @return {@code this}. +	 */ +	@org.checkerframework.common.returnsreceiver.qual.This  	@java.lang.SuppressWarnings("all")  	public CheckerFrameworkBasic setZ(final int z) {  		this.z = z; @@ -64,6 +62,15 @@ class CheckerFrameworkBasic {  	public java.lang.String toString() {  		return "CheckerFrameworkBasic(x=" + this.getX() + ", y=" + this.getY() + ", z=" + this.getZ() + ")";  	} +	@java.lang.SuppressWarnings("all") +	public CheckerFrameworkBasic(final int x, final int y, final int z) { +		this.x = x; +		this.y = y; +		this.z = z; +	} +	/** +	 * @return {@code this}. +	 */  	@org.checkerframework.dataflow.qual.SideEffectFree  	@java.lang.SuppressWarnings("all")  	public CheckerFrameworkBasic withX(final int x) { diff --git a/test/transform/resource/after-delombok/CheckerFrameworkBuilder.java b/test/transform/resource/after-delombok/CheckerFrameworkBuilder.java index ace3adad..99272bd5 100644 --- a/test/transform/resource/after-delombok/CheckerFrameworkBuilder.java +++ b/test/transform/resource/after-delombok/CheckerFrameworkBuilder.java @@ -9,7 +9,6 @@ class CheckerFrameworkBuilder {  	private static int $default$x() {  		return 5;  	} -	@org.checkerframework.common.aliasing.qual.Unique  	@java.lang.SuppressWarnings("all")  	CheckerFrameworkBuilder(final int x, final int y, final int z, final List<String> names) {  		this.x = x; @@ -29,37 +28,45 @@ class CheckerFrameworkBuilder {  		private int z;  		@java.lang.SuppressWarnings("all")  		private java.util.ArrayList<String> names; -		@org.checkerframework.common.aliasing.qual.Unique  		@java.lang.SuppressWarnings("all")  		CheckerFrameworkBuilderBuilder() {  		} -		@org.checkerframework.checker.builder.qual.ReturnsReceiver +		/** +		 * @return {@code this}. +		 */ +		@org.checkerframework.common.returnsreceiver.qual.This  		@java.lang.SuppressWarnings("all") -		public CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder x(@org.checkerframework.checker.builder.qual.NotCalledMethods("x") CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder this, final int x) { +		public CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder x(CheckerFrameworkBuilder.@org.checkerframework.checker.calledmethods.qual.NotCalledMethods("x") CheckerFrameworkBuilderBuilder this, final int x) {  			this.x$value = x;  			x$set = true;  			return this;  		} -		@org.checkerframework.checker.builder.qual.ReturnsReceiver +		/** +		 * @return {@code this}. +		 */ +		@org.checkerframework.common.returnsreceiver.qual.This  		@java.lang.SuppressWarnings("all") -		public CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder y(@org.checkerframework.checker.builder.qual.NotCalledMethods("y") CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder this, final int y) { +		public CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder y(CheckerFrameworkBuilder.@org.checkerframework.checker.calledmethods.qual.NotCalledMethods("y") CheckerFrameworkBuilderBuilder this, final int y) {  			this.y = y;  			return this;  		} -		@org.checkerframework.checker.builder.qual.ReturnsReceiver +		/** +		 * @return {@code this}. +		 */ +		@org.checkerframework.common.returnsreceiver.qual.This  		@java.lang.SuppressWarnings("all") -		public CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder z(@org.checkerframework.checker.builder.qual.NotCalledMethods("z") CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder this, final int z) { +		public CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder z(CheckerFrameworkBuilder.@org.checkerframework.checker.calledmethods.qual.NotCalledMethods("z") CheckerFrameworkBuilderBuilder this, final int z) {  			this.z = z;  			return this;  		} -		@org.checkerframework.checker.builder.qual.ReturnsReceiver +		@org.checkerframework.common.returnsreceiver.qual.This  		@java.lang.SuppressWarnings("all")  		public CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder name(final String name) {  			if (this.names == null) this.names = new java.util.ArrayList<String>();  			this.names.add(name);  			return this;  		} -		@org.checkerframework.checker.builder.qual.ReturnsReceiver +		@org.checkerframework.common.returnsreceiver.qual.This  		@java.lang.SuppressWarnings("all")  		public CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder names(final java.util.Collection<? extends String> names) {  			if (names == null) { @@ -69,7 +76,7 @@ class CheckerFrameworkBuilder {  			this.names.addAll(names);  			return this;  		} -		@org.checkerframework.checker.builder.qual.ReturnsReceiver +		@org.checkerframework.common.returnsreceiver.qual.This  		@java.lang.SuppressWarnings("all")  		public CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder clearNames() {  			if (this.names != null) this.names.clear(); @@ -77,7 +84,7 @@ class CheckerFrameworkBuilder {  		}  		@org.checkerframework.dataflow.qual.SideEffectFree  		@java.lang.SuppressWarnings("all") -		public CheckerFrameworkBuilder build(@org.checkerframework.checker.builder.qual.CalledMethods({"y", "z"}) CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder this) { +		public CheckerFrameworkBuilder build(CheckerFrameworkBuilder.@org.checkerframework.checker.calledmethods.qual.CalledMethods({"y", "z"}) CheckerFrameworkBuilderBuilder this) {  			java.util.List<String> names;  			switch (this.names == null ? 0 : this.names.size()) {  			case 0:  @@ -100,10 +107,10 @@ class CheckerFrameworkBuilder {  			return "CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder(x$value=" + this.x$value + ", y=" + this.y + ", z=" + this.z + ", names=" + this.names + ")";  		}  	} -	@org.checkerframework.common.aliasing.qual.Unique +	  	@org.checkerframework.dataflow.qual.SideEffectFree  	@java.lang.SuppressWarnings("all") -	public static CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder builder() { +	public static CheckerFrameworkBuilder.@org.checkerframework.common.aliasing.qual.Unique CheckerFrameworkBuilderBuilder builder() {  		return new CheckerFrameworkBuilder.CheckerFrameworkBuilderBuilder();  	}  } diff --git a/test/transform/resource/after-delombok/CheckerFrameworkSuperBuilder.java b/test/transform/resource/after-delombok/CheckerFrameworkSuperBuilder.java index 30408c3b..8dcdaf10 100644 --- a/test/transform/resource/after-delombok/CheckerFrameworkSuperBuilder.java +++ b/test/transform/resource/after-delombok/CheckerFrameworkSuperBuilder.java @@ -1,4 +1,4 @@ -// skip-idempotent +//version 8:  import java.util.List;  class CheckerFrameworkSuperBuilder {  	public static class Parent { @@ -22,40 +22,49 @@ class CheckerFrameworkSuperBuilder {  			private int z;  			@java.lang.SuppressWarnings("all")  			private java.util.ArrayList<String> names; -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			@org.checkerframework.common.returnsreceiver.qual.This  			@org.checkerframework.dataflow.qual.Pure  			@java.lang.SuppressWarnings("all")  			protected abstract B self();  			@org.checkerframework.dataflow.qual.SideEffectFree  			@java.lang.SuppressWarnings("all") -			public abstract C build(@org.checkerframework.checker.builder.qual.CalledMethods({"y", "z"}) CheckerFrameworkSuperBuilder.Parent this); -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			public abstract C build(CheckerFrameworkSuperBuilder.Parent.@org.checkerframework.checker.calledmethods.qual.CalledMethods({"y", "z"}) ParentBuilder<C, B> this); +			/** +			 * @return {@code this}. +			 */ +			@org.checkerframework.common.returnsreceiver.qual.This  			@java.lang.SuppressWarnings("all") -			public B x(@org.checkerframework.checker.builder.qual.NotCalledMethods("x") CheckerFrameworkSuperBuilder.Parent.ParentBuilder<C, B> this, final int x) { +			public B x(CheckerFrameworkSuperBuilder.Parent.@org.checkerframework.checker.calledmethods.qual.NotCalledMethods("x") ParentBuilder<C, B> this, final int x) {  				this.x$value = x;  				x$set = true;  				return self();  			} -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			/** +			 * @return {@code this}. +			 */ +			@org.checkerframework.common.returnsreceiver.qual.This  			@java.lang.SuppressWarnings("all") -			public B y(@org.checkerframework.checker.builder.qual.NotCalledMethods("y") CheckerFrameworkSuperBuilder.Parent.ParentBuilder<C, B> this, final int y) { +			public B y(CheckerFrameworkSuperBuilder.Parent.@org.checkerframework.checker.calledmethods.qual.NotCalledMethods("y") ParentBuilder<C, B> this, final int y) {  				this.y = y;  				return self();  			} -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			/** +			 * @return {@code this}. +			 */ +			@org.checkerframework.common.returnsreceiver.qual.This  			@java.lang.SuppressWarnings("all") -			public B z(@org.checkerframework.checker.builder.qual.NotCalledMethods("z") CheckerFrameworkSuperBuilder.Parent.ParentBuilder<C, B> this, final int z) { +			public B z(CheckerFrameworkSuperBuilder.Parent.@org.checkerframework.checker.calledmethods.qual.NotCalledMethods("z") ParentBuilder<C, B> this, final int z) {  				this.z = z;  				return self();  			} -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			@org.checkerframework.common.returnsreceiver.qual.This  			@java.lang.SuppressWarnings("all")  			public B name(final String name) {  				if (this.names == null) this.names = new java.util.ArrayList<String>();  				this.names.add(name);  				return self();  			} -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			@org.checkerframework.common.returnsreceiver.qual.This  			@java.lang.SuppressWarnings("all")  			public B names(final java.util.Collection<? extends String> names) {  				if (names == null) { @@ -65,7 +74,7 @@ class CheckerFrameworkSuperBuilder {  				this.names.addAll(names);  				return self();  			} -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			@org.checkerframework.common.returnsreceiver.qual.This  			@java.lang.SuppressWarnings("all")  			public B clearNames() {  				if (this.names != null) this.names.clear(); @@ -80,12 +89,11 @@ class CheckerFrameworkSuperBuilder {  		}  		@java.lang.SuppressWarnings("all")  		private static final class ParentBuilderImpl extends CheckerFrameworkSuperBuilder.Parent.ParentBuilder<CheckerFrameworkSuperBuilder.Parent, CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl> { -			@org.checkerframework.common.aliasing.qual.Unique  			@java.lang.SuppressWarnings("all")  			private ParentBuilderImpl() {  			}  			@java.lang.Override -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			@org.checkerframework.common.returnsreceiver.qual.This  			@org.checkerframework.dataflow.qual.Pure  			@java.lang.SuppressWarnings("all")  			protected CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl self() { @@ -94,7 +102,7 @@ class CheckerFrameworkSuperBuilder {  			@org.checkerframework.dataflow.qual.SideEffectFree  			@java.lang.Override  			@java.lang.SuppressWarnings("all") -			public CheckerFrameworkSuperBuilder.Parent build(@org.checkerframework.checker.builder.qual.CalledMethods({"y", "z"}) CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl this) { +			public CheckerFrameworkSuperBuilder.Parent build(CheckerFrameworkSuperBuilder.Parent.@org.checkerframework.checker.calledmethods.qual.CalledMethods({"y", "z"}) ParentBuilderImpl this) {  				return new CheckerFrameworkSuperBuilder.Parent(this);  			}  		} @@ -120,7 +128,7 @@ class CheckerFrameworkSuperBuilder {  		}  		@org.checkerframework.dataflow.qual.SideEffectFree  		@java.lang.SuppressWarnings("all") -		public static CheckerFrameworkSuperBuilder.Parent.ParentBuilder<?, ?> builder() { +		public static CheckerFrameworkSuperBuilder.Parent.@org.checkerframework.common.aliasing.qual.Unique ParentBuilder<?, ?> builder() {  			return new CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl();  		}  	} @@ -140,24 +148,30 @@ class CheckerFrameworkSuperBuilder {  			@java.lang.SuppressWarnings("all")  			private int b;  			@java.lang.Override -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			@org.checkerframework.common.returnsreceiver.qual.This  			@org.checkerframework.dataflow.qual.Pure  			@java.lang.SuppressWarnings("all")  			protected abstract B self();  			@org.checkerframework.dataflow.qual.SideEffectFree  			@java.lang.Override  			@java.lang.SuppressWarnings("all") -			public abstract C build(@org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.ZChild this); -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			public abstract C build(CheckerFrameworkSuperBuilder.ZChild.@org.checkerframework.checker.calledmethods.qual.CalledMethods("b") ZChildBuilder<C, B> this); +			/** +			 * @return {@code this}. +			 */ +			@org.checkerframework.common.returnsreceiver.qual.This  			@java.lang.SuppressWarnings("all") -			public B a(@org.checkerframework.checker.builder.qual.NotCalledMethods("a") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<C, B> this, final int a) { +			public B a(CheckerFrameworkSuperBuilder.ZChild.@org.checkerframework.checker.calledmethods.qual.NotCalledMethods("a") ZChildBuilder<C, B> this, final int a) {  				this.a$value = a;  				a$set = true;  				return self();  			} -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			/** +			 * @return {@code this}. +			 */ +			@org.checkerframework.common.returnsreceiver.qual.This  			@java.lang.SuppressWarnings("all") -			public B b(@org.checkerframework.checker.builder.qual.NotCalledMethods("b") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<C, B> this, final int b) { +			public B b(CheckerFrameworkSuperBuilder.ZChild.@org.checkerframework.checker.calledmethods.qual.NotCalledMethods("b") ZChildBuilder<C, B> this, final int b) {  				this.b = b;  				return self();  			} @@ -170,12 +184,11 @@ class CheckerFrameworkSuperBuilder {  		}  		@java.lang.SuppressWarnings("all")  		private static final class ZChildBuilderImpl extends CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<CheckerFrameworkSuperBuilder.ZChild, CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl> { -			@org.checkerframework.common.aliasing.qual.Unique  			@java.lang.SuppressWarnings("all")  			private ZChildBuilderImpl() {  			}  			@java.lang.Override -			@org.checkerframework.checker.builder.qual.ReturnsReceiver +			@org.checkerframework.common.returnsreceiver.qual.This  			@org.checkerframework.dataflow.qual.Pure  			@java.lang.SuppressWarnings("all")  			protected CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl self() { @@ -184,7 +197,7 @@ class CheckerFrameworkSuperBuilder {  			@org.checkerframework.dataflow.qual.SideEffectFree  			@java.lang.Override  			@java.lang.SuppressWarnings("all") -			public CheckerFrameworkSuperBuilder.ZChild build(@org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl this) { +			public CheckerFrameworkSuperBuilder.ZChild build(CheckerFrameworkSuperBuilder.ZChild.@org.checkerframework.checker.calledmethods.qual.CalledMethods("b") ZChildBuilderImpl this) {  				return new CheckerFrameworkSuperBuilder.ZChild(this);  			}  		} @@ -198,7 +211,7 @@ class CheckerFrameworkSuperBuilder {  		}  		@org.checkerframework.dataflow.qual.SideEffectFree  		@java.lang.SuppressWarnings("all") -		public static CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<?, ?> builder() { +		public static CheckerFrameworkSuperBuilder.ZChild.@org.checkerframework.common.aliasing.qual.Unique ZChildBuilder<?, ?> builder() {  			return new CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl();  		}  	} diff --git a/test/transform/resource/after-delombok/ConstructorsWithAccessors.java b/test/transform/resource/after-delombok/ConstructorsWithAccessors.java index 3614d682..7097d5a2 100644 --- a/test/transform/resource/after-delombok/ConstructorsWithAccessors.java +++ b/test/transform/resource/after-delombok/ConstructorsWithAccessors.java @@ -1,3 +1,4 @@ +//version 8:  class ConstructorsWithAccessors {  	int plower;  	int pUpper; diff --git a/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults.java b/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults.java index d5ac9bad..bcc9a57e 100644 --- a/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults.java +++ b/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults.java @@ -16,12 +16,18 @@ final class ConstructorsWithBuilderDefaults {  		@java.lang.SuppressWarnings("all")  		ConstructorsWithBuilderDefaultsBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public ConstructorsWithBuilderDefaults.ConstructorsWithBuilderDefaultsBuilder x(final int x) {  			this.x$value = x;  			x$set = true;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public ConstructorsWithBuilderDefaults.ConstructorsWithBuilderDefaultsBuilder y(final int y) {  			this.y = y; diff --git a/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults2.java b/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults2.java index 9609f62b..f62167c6 100644 --- a/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults2.java +++ b/test/transform/resource/after-delombok/ConstructorsWithBuilderDefaults2.java @@ -33,18 +33,27 @@ final class ConstructorsWithBuilderDefaults<T> {  		@java.lang.SuppressWarnings("all")  		ConstructorsWithBuilderDefaultsBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public ConstructorsWithBuilderDefaults.ConstructorsWithBuilderDefaultsBuilder<T> z(final java.util.List<T> z) {  			this.z$value = z;  			z$set = true;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public ConstructorsWithBuilderDefaults.ConstructorsWithBuilderDefaultsBuilder<T> x(final T x) {  			this.x$value = x;  			x$set = true;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public ConstructorsWithBuilderDefaults.ConstructorsWithBuilderDefaultsBuilder<T> q(final T q) {  			this.q = q; diff --git a/test/transform/resource/after-delombok/DataOnLocalClass.java b/test/transform/resource/after-delombok/DataOnLocalClass.java index 80f3ca83..0d863f4f 100644 --- a/test/transform/resource/after-delombok/DataOnLocalClass.java +++ b/test/transform/resource/after-delombok/DataOnLocalClass.java @@ -1,3 +1,4 @@ +//version 8:  class DataOnLocalClass1 {  	public static void main(String[] args) {  		class Local { diff --git a/test/transform/resource/after-delombok/DataWithOverrideEqualsAndHashCode.java b/test/transform/resource/after-delombok/DataWithOverrideEqualsAndHashCode.java new file mode 100644 index 00000000..7e84dda4 --- /dev/null +++ b/test/transform/resource/after-delombok/DataWithOverrideEqualsAndHashCode.java @@ -0,0 +1,25 @@ +class DataWithOverrideEqualsAndHashCode { + +	class Data1 { +	} + +	class Data2 extends Data1 { +		public int hashCode() { +			return 42; +		} + +		public boolean equals(Object other) { +			return false; +		} + +		@java.lang.SuppressWarnings("all") +		public Data2() { +		} + +		@java.lang.Override +		@java.lang.SuppressWarnings("all") +		public java.lang.String toString() { +			return "DataWithOverrideEqualsAndHashCode.Data2()"; +		} +	} +} diff --git a/test/transform/resource/after-delombok/EqualsAndHashCodeAnnotated.java b/test/transform/resource/after-delombok/EqualsAndHashCodeAnnotated.java index 64b6f4d3..d99fc71c 100644 --- a/test/transform/resource/after-delombok/EqualsAndHashCodeAnnotated.java +++ b/test/transform/resource/after-delombok/EqualsAndHashCodeAnnotated.java @@ -1,3 +1,4 @@ +//version 8:  import java.lang.annotation.*;  class EqualsAndHashCodeAnnotated { diff --git a/test/transform/resource/after-delombok/EqualsAndHashCodeCache.java b/test/transform/resource/after-delombok/EqualsAndHashCodeCache.java new file mode 100644 index 00000000..4f3574b6 --- /dev/null +++ b/test/transform/resource/after-delombok/EqualsAndHashCodeCache.java @@ -0,0 +1,167 @@ +class EqualsAndHashCode { +	@java.lang.SuppressWarnings("all") +	private transient int $hashCodeCache; +	int x; +	boolean[] y; +	Object[] z; +	String a; +	String b; +	@java.lang.Override +	@java.lang.SuppressWarnings("all") +	public boolean equals(final java.lang.Object o) { +		if (o == this) return true; +		if (!(o instanceof EqualsAndHashCode)) return false; +		final EqualsAndHashCode other = (EqualsAndHashCode) o; +		if (!other.canEqual((java.lang.Object) this)) return false; +		if (this.x != other.x) return false; +		if (!java.util.Arrays.equals(this.y, other.y)) return false; +		if (!java.util.Arrays.deepEquals(this.z, other.z)) return false; +		final java.lang.Object this$a = this.a; +		final java.lang.Object other$a = other.a; +		if (this$a == null ? other$a != null : !this$a.equals(other$a)) return false; +		final java.lang.Object this$b = this.b; +		final java.lang.Object other$b = other.b; +		if (this$b == null ? other$b != null : !this$b.equals(other$b)) return false; +		return true; +	} +	@java.lang.SuppressWarnings("all") +	protected boolean canEqual(final java.lang.Object other) { +		return other instanceof EqualsAndHashCode; +	} +	@java.lang.Override +	@java.lang.SuppressWarnings("all") +	public int hashCode() { +		if (this.$hashCodeCache != 0) return this.$hashCodeCache; +		final int PRIME = 59; +		int result = 1; +		result = result * PRIME + this.x; +		result = result * PRIME + java.util.Arrays.hashCode(this.y); +		result = result * PRIME + java.util.Arrays.deepHashCode(this.z); +		final java.lang.Object $a = this.a; +		result = result * PRIME + ($a == null ? 43 : $a.hashCode()); +		final java.lang.Object $b = this.b; +		result = result * PRIME + ($b == null ? 43 : $b.hashCode()); +		if (result == 0) result = java.lang.Integer.MIN_VALUE; +		this.$hashCodeCache = result; +		return result; +	} +} +final class EqualsAndHashCode2 { +	@java.lang.SuppressWarnings("all") +	private transient int $hashCodeCache; +	int x; +	long y; +	float f; +	double d; +	boolean b; +	@java.lang.Override +	@java.lang.SuppressWarnings("all") +	public boolean equals(final java.lang.Object o) { +		if (o == this) return true; +		if (!(o instanceof EqualsAndHashCode2)) return false; +		final EqualsAndHashCode2 other = (EqualsAndHashCode2) o; +		if (this.x != other.x) return false; +		if (this.y != other.y) return false; +		if (java.lang.Float.compare(this.f, other.f) != 0) return false; +		if (java.lang.Double.compare(this.d, other.d) != 0) return false; +		if (this.b != other.b) return false; +		return true; +	} +	@java.lang.Override +	@java.lang.SuppressWarnings("all") +	public int hashCode() { +		if (this.$hashCodeCache != 0) return this.$hashCodeCache; +		final int PRIME = 59; +		int result = 1; +		result = result * PRIME + this.x; +		final long $y = this.y; +		result = result * PRIME + (int) ($y >>> 32 ^ $y); +		result = result * PRIME + java.lang.Float.floatToIntBits(this.f); +		final long $d = java.lang.Double.doubleToLongBits(this.d); +		result = result * PRIME + (int) ($d >>> 32 ^ $d); +		result = result * PRIME + (this.b ? 79 : 97); +		if (result == 0) result = java.lang.Integer.MIN_VALUE; +		this.$hashCodeCache = result; +		return result; +	} +} +final class EqualsAndHashCode3 extends EqualsAndHashCode { +	@java.lang.SuppressWarnings("all") +	private transient int $hashCodeCache; +	@java.lang.Override +	@java.lang.SuppressWarnings("all") +	public boolean equals(final java.lang.Object o) { +		if (o == this) return true; +		if (!(o instanceof EqualsAndHashCode3)) return false; +		final EqualsAndHashCode3 other = (EqualsAndHashCode3) o; +		if (!other.canEqual((java.lang.Object) this)) return false; +		return true; +	} +	@java.lang.SuppressWarnings("all") +	protected boolean canEqual(final java.lang.Object other) { +		return other instanceof EqualsAndHashCode3; +	} +	@java.lang.Override +	@java.lang.SuppressWarnings("all") +	public int hashCode() { +		if (this.$hashCodeCache != 0) return this.$hashCodeCache; +		int result = 1; +		if (result == 0) result = java.lang.Integer.MIN_VALUE; +		this.$hashCodeCache = result; +		return result; +	} +} +class EqualsAndHashCode4 extends EqualsAndHashCode { +	@java.lang.SuppressWarnings("all") +	private transient int $hashCodeCache; +	@java.lang.Override +	@java.lang.SuppressWarnings("all") +	public boolean equals(final java.lang.Object o) { +		if (o == this) return true; +		if (!(o instanceof EqualsAndHashCode4)) return false; +		final EqualsAndHashCode4 other = (EqualsAndHashCode4) o; +		if (!other.canEqual((java.lang.Object) this)) return false; +		if (!super.equals(o)) return false; +		return true; +	} +	@java.lang.SuppressWarnings("all") +	protected boolean canEqual(final java.lang.Object other) { +		return other instanceof EqualsAndHashCode4; +	} +	@java.lang.Override +	@java.lang.SuppressWarnings("all") +	public int hashCode() { +		if (this.$hashCodeCache != 0) return this.$hashCodeCache; +		int result = super.hashCode(); +		if (result == 0) result = java.lang.Integer.MIN_VALUE; +		this.$hashCodeCache = result; +		return result; +	} +} +final class EqualsAndHashCode5 extends EqualsAndHashCode { +	@java.lang.SuppressWarnings("all") +	private transient int $hashCodeCache; +	@java.lang.Override +	@java.lang.SuppressWarnings("all") +	public boolean equals(final java.lang.Object o) { +		if (o == this) return true; +		if (!(o instanceof EqualsAndHashCode5)) return false; +		final EqualsAndHashCode5 other = (EqualsAndHashCode5) o; +		if (!other.canEqual((java.lang.Object) this)) return false; +		if (!super.equals(o)) return false; +		return true; +	} +	@java.lang.SuppressWarnings("all") +	protected boolean canEqual(final java.lang.Object other) { +		return other instanceof EqualsAndHashCode5; +	} +	@java.lang.Override +	@java.lang.SuppressWarnings("all") +	public int hashCode() { +		if (this.$hashCodeCache != 0) return this.$hashCodeCache; +		int result = super.hashCode(); +		if (result == 0) result = java.lang.Integer.MIN_VALUE; +		this.$hashCodeCache = result; +		return result; +	} +} diff --git a/test/transform/resource/after-delombok/ExtensionMethodAutoboxing.java b/test/transform/resource/after-delombok/ExtensionMethodAutoboxing.java new file mode 100644 index 00000000..f274cabb --- /dev/null +++ b/test/transform/resource/after-delombok/ExtensionMethodAutoboxing.java @@ -0,0 +1,20 @@ +class ExtensionMethodAutoboxing { +	public void test() { +		Long l1 = 1L; +		long l2 = 1L; +		Integer i1 = 1; +		int i2 = 1; +		String string = "test"; +		ExtensionMethodAutoboxing.Extensions.boxing(string, l1, i1); +		ExtensionMethodAutoboxing.Extensions.boxing(string, l1, i2); +		ExtensionMethodAutoboxing.Extensions.boxing(string, l2, i1); +		ExtensionMethodAutoboxing.Extensions.boxing(string, l2, i2); +	} + + +	static class Extensions { +		public static String boxing(String string, Long a, int b) { +			return string + " " + a + " " + b; +		} +	} +}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/ExtensionMethodChain.java b/test/transform/resource/after-delombok/ExtensionMethodChain.java new file mode 100644 index 00000000..77f79dea --- /dev/null +++ b/test/transform/resource/after-delombok/ExtensionMethodChain.java @@ -0,0 +1,15 @@ +import java.util.Arrays; +import java.util.List; + +class ExtensionMethodChain { +	public void test() { +		ExtensionMethodChain.Extensions.intValue("1").intValue(); +	} + + +	static class Extensions { +		public static Integer intValue(String s) { +			return Integer.valueOf(s); +		} +	} +}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/ExtensionMethodFunctional.java b/test/transform/resource/after-delombok/ExtensionMethodFunctional.java new file mode 100644 index 00000000..2b82a957 --- /dev/null +++ b/test/transform/resource/after-delombok/ExtensionMethodFunctional.java @@ -0,0 +1,42 @@ +// version 8: +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +class ExtensionMethodFunctional { +	public void test() { +		String test = "test"; +		test = ExtensionMethodFunctional.Extensions.map(test, s -> ExtensionMethodFunctional.Extensions.reverse(s)); +		ExtensionMethodFunctional.Extensions.consume(test, s -> System.out.println("1: " + s), s -> System.out.println("2: " + s)); +		ExtensionMethodFunctional.Extensions.consume(test, System.out::println, System.out::println); +		ExtensionMethodFunctional.Extensions.toList1(Stream.of("a", "b", "c").map(String::toUpperCase)); +		List<Integer> i2 = ExtensionMethodFunctional.Extensions.toList2(Stream.of("a", "b", "c").map(String::toUpperCase)); +	} + +	static class Extensions { +		public static <T, R> R map(T value, Function<T, R> mapper) { +			return mapper.apply(value); +		} + +		public static String reverse(String string) { +			return new StringBuilder(string).reverse().toString(); +		} + +		@SafeVarargs +		public static <T> void consume(T o, Consumer<T>... consumer) { +			for (int i = 0; i < consumer.length; i++) { +				consumer[i].accept(o); +			} +		} +		 +		public static <T> List<T> toList1(Stream<T> stream) { +			return (List<T>) stream.collect(Collectors.toList()); +		} + +		public static <T, U> List<U> toList2(Stream<T> stream) { +			return null; +		} +	} +} diff --git a/test/transform/resource/after-delombok/ExtensionMethodGeneric.java b/test/transform/resource/after-delombok/ExtensionMethodGeneric.java new file mode 100644 index 00000000..8559b7ff --- /dev/null +++ b/test/transform/resource/after-delombok/ExtensionMethodGeneric.java @@ -0,0 +1,33 @@ +import java.util.List; +import java.util.Map; + +class ExtensionMethodGeneric { +	public void test() { +		List<String> stringList = null; +		List<Number> numberList = null; +		ExtensionMethodGeneric.Extensions.test(stringList); +		ExtensionMethodGeneric.Extensions.test(stringList, numberList); +		ExtensionMethodGeneric.Extensions.test(ExtensionMethodGeneric.Extensions.test(stringList, stringList), numberList); +		Integer i = ExtensionMethodGeneric.Extensions.test2(stringList); +		Map<String, Integer> map = null; +		List<String> l = ExtensionMethodGeneric.Extensions.test(map, stringList, numberList); +	} +	 +	static class Extensions { +		public static <T> List<T> test(List<String> obj, List<T> list) { +			return null; +		} + +		public static <K, V> K test(Map<String, Integer> obj, K k, V v) { +			return k; +		} + +		public static <T> T test(List<T> list) { +			return null; +		} + +		public static <T, U> U test2(List<T> list) { +			return null; +		} +	} +} diff --git a/test/transform/resource/after-delombok/ExtensionMethodNames.java b/test/transform/resource/after-delombok/ExtensionMethodNames.java new file mode 100644 index 00000000..45f76ee4 --- /dev/null +++ b/test/transform/resource/after-delombok/ExtensionMethodNames.java @@ -0,0 +1,27 @@ +package a; + +class ExtensionMethodNames { +	 +	public void instanceCalls() { +		a.Extensions.ext((new Test())); +		Test t = new Test(); +		a.Extensions.ext(t); +		Test Test = new Test(); +		a.Extensions.ext(Test); +	} +	 +	public void staticCalls() { +		Test.ext(); +		a.Test.ext(); +	} +} + +class Extensions { +	public static void ext(Test t) { +	} +} + +class Test { +	public static void ext() { +	} +}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/ExtensionMethodSuppress.java b/test/transform/resource/after-delombok/ExtensionMethodSuppress.java new file mode 100644 index 00000000..d9e7cb28 --- /dev/null +++ b/test/transform/resource/after-delombok/ExtensionMethodSuppress.java @@ -0,0 +1,33 @@ +class ExtensionMethodSuppress { +	public void test() { +		Test.staticMethod(); +		Test test = new Test(); +		Extensions.instanceMethod(test); +		Extensions.staticMethod(test); +	} +} + +class ExtensionMethodKeep { +	public void test() { +		Test.staticMethod(); +		Test test = new Test(); +		test.instanceMethod(); +		test.staticMethod(); +	} +} + +class Test { +	public static void staticMethod() { +	} +	 +	public void instanceMethod() { +	} +} + +class Extensions { +	public static void staticMethod(Test test) { +	} +	 +	public static void instanceMethod(Test test) { +	} +}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/ExtensionMethodVarargs.java b/test/transform/resource/after-delombok/ExtensionMethodVarargs.java new file mode 100644 index 00000000..237b73ef --- /dev/null +++ b/test/transform/resource/after-delombok/ExtensionMethodVarargs.java @@ -0,0 +1,19 @@ +class ExtensionMethodVarargs { +	public void test() { +		Long l1 = 1L; +		long l2 = 1L; +		Integer i1 = 1; +		int i2 = 1; +		ExtensionMethodVarargs.Extensions.format("%d %d %d %d", l1, l2, i1, i2); +		ExtensionMethodVarargs.Extensions.format("%d", l1); +		ExtensionMethodVarargs.Extensions.format("", new Integer[] {1, 2}); +		ExtensionMethodVarargs.Extensions.format("", new Integer[] {1, 2}, new Integer[] {1, 2}); +	} + + +	static class Extensions { +		public static String format(String string, Object... params) { +			return String.format(string, params); +		} +	} +}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/GetterLazyArguments.java b/test/transform/resource/after-delombok/GetterLazyArguments.java index a8a422c0..604513cd 100644 --- a/test/transform/resource/after-delombok/GetterLazyArguments.java +++ b/test/transform/resource/after-delombok/GetterLazyArguments.java @@ -1,3 +1,4 @@ +// version 8:  class GetterLazyArguments {  	static String fun() {  		return null; diff --git a/test/transform/resource/after-delombok/GetterOnClass.java b/test/transform/resource/after-delombok/GetterOnClass.java index f0025370..ae845e54 100644 --- a/test/transform/resource/after-delombok/GetterOnClass.java +++ b/test/transform/resource/after-delombok/GetterOnClass.java @@ -1,3 +1,4 @@ +//version 8:  class GetterOnClass1 {  	boolean isNone;  	boolean isPublic; diff --git a/test/transform/resource/after-delombok/I2335_BuilderMultipleObtainVia.java b/test/transform/resource/after-delombok/I2335_BuilderMultipleObtainVia.java index f9cd424d..6cf390ed 100644 --- a/test/transform/resource/after-delombok/I2335_BuilderMultipleObtainVia.java +++ b/test/transform/resource/after-delombok/I2335_BuilderMultipleObtainVia.java @@ -26,11 +26,17 @@ public class I2335_BuilderMultipleObtainVia {  		@java.lang.SuppressWarnings("all")  		I2335_BuilderMultipleObtainViaBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public I2335_BuilderMultipleObtainVia.I2335_BuilderMultipleObtainViaBuilder theString(final String theString) {  			this.theString = theString;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public I2335_BuilderMultipleObtainVia.I2335_BuilderMultipleObtainViaBuilder theLong(final Long theLong) {  			this.theLong = theLong; diff --git a/test/transform/resource/after-delombok/JacksonBuilderSingular.java b/test/transform/resource/after-delombok/JacksonBuilderSingular.java index feaa6832..b2bbfa5a 100644 --- a/test/transform/resource/after-delombok/JacksonBuilderSingular.java +++ b/test/transform/resource/after-delombok/JacksonBuilderSingular.java @@ -1,3 +1,4 @@ +//version 8: Jackson deps are at least Java7+.  import java.util.List;  import java.util.Map;  import com.fasterxml.jackson.annotation.JsonAnySetter; diff --git a/test/transform/resource/after-delombok/JacksonJsonProperty.java b/test/transform/resource/after-delombok/JacksonJsonProperty.java index 9ca8d7de..7bb17dfd 100644 --- a/test/transform/resource/after-delombok/JacksonJsonProperty.java +++ b/test/transform/resource/after-delombok/JacksonJsonProperty.java @@ -1,3 +1,4 @@ +//version 8: Jackson deps are at least Java7+.  import com.fasterxml.jackson.annotation.JsonProperty;  import com.fasterxml.jackson.annotation.JsonSetter;  import com.fasterxml.jackson.annotation.Nulls; @@ -16,6 +17,9 @@ public class JacksonJsonProperty {  		@java.lang.SuppressWarnings("all")  		JacksonJsonPropertyBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@JsonProperty("kebab-case-prop")  		@JsonSetter(nulls = Nulls.SKIP)  		@java.lang.SuppressWarnings("all") diff --git a/test/transform/resource/after-delombok/JacksonizedBuilderComplex.java b/test/transform/resource/after-delombok/JacksonizedBuilderComplex.java index 30f6b9af..ed0ca9e7 100644 --- a/test/transform/resource/after-delombok/JacksonizedBuilderComplex.java +++ b/test/transform/resource/after-delombok/JacksonizedBuilderComplex.java @@ -1,3 +1,4 @@ +//version 8: Jackson deps are at least Java7+.  //CONF: lombok.builder.className = Test*Name  import java.util.List;  @com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedBuilderComplex.TestVoidName.class) @@ -18,21 +19,33 @@ class JacksonizedBuilderComplex {  		@java.lang.SuppressWarnings("all")  		TestVoidName() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public JacksonizedBuilderComplex.TestVoidName<T> withNumber(final T number) {  			this.number = number;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public JacksonizedBuilderComplex.TestVoidName<T> withArg2(final int arg2) {  			this.arg2 = arg2;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public JacksonizedBuilderComplex.TestVoidName<T> withArg3(final String arg3) {  			this.arg3 = arg3;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public JacksonizedBuilderComplex.TestVoidName<T> withSelfRef(final JacksonizedBuilderComplex selfRef) {  			this.selfRef = selfRef; diff --git a/test/transform/resource/after-delombok/JacksonizedBuilderSimple.java b/test/transform/resource/after-delombok/JacksonizedBuilderSimple.java index bd79df90..cb8390d2 100644 --- a/test/transform/resource/after-delombok/JacksonizedBuilderSimple.java +++ b/test/transform/resource/after-delombok/JacksonizedBuilderSimple.java @@ -1,3 +1,4 @@ +//version 8: Jackson deps are at least Java7+.  import java.util.List;  import com.fasterxml.jackson.annotation.JsonIgnoreProperties;  @JsonIgnoreProperties(ignoreUnknown = true) @@ -23,11 +24,17 @@ class JacksonizedBuilderSimple<T> {  		@java.lang.SuppressWarnings("all")  		JacksonizedBuilderSimpleBuilder() {  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public JacksonizedBuilderSimple.JacksonizedBuilderSimpleBuilder<T> yes(final int yes) {  			this.yes = yes;  			return this;  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public JacksonizedBuilderSimple.JacksonizedBuilderSimpleBuilder<T> also(final List<T> also) {  			this.also = also; diff --git a/test/transform/resource/after-delombok/JacksonizedSuperBuilderSimple.java b/test/transform/resource/after-delombok/JacksonizedSuperBuilderSimple.java index 7fd3f8dc..88a51f41 100644 --- a/test/transform/resource/after-delombok/JacksonizedSuperBuilderSimple.java +++ b/test/transform/resource/after-delombok/JacksonizedSuperBuilderSimple.java @@ -1,55 +1,59 @@ -public class JacksonizedSuperBuilderSimple {
 -	@com.fasterxml.jackson.annotation.JsonIgnoreProperties(ignoreUnknown = true)
 -	@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl.class)
 -	public static class Parent {
 -		int field1;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<C extends JacksonizedSuperBuilderSimple.Parent, B extends JacksonizedSuperBuilderSimple.Parent.ParentBuilder<C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private int field1;
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B field1(final int field1) {
 -				this.field1 = field1;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "JacksonizedSuperBuilderSimple.Parent.ParentBuilder(field1=" + this.field1 + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		@com.fasterxml.jackson.annotation.JsonIgnoreProperties(ignoreUnknown = true)
 -		@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "", buildMethodName = "build")
 -		static final class ParentBuilderImpl extends JacksonizedSuperBuilderSimple.Parent.ParentBuilder<JacksonizedSuperBuilderSimple.Parent, JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public JacksonizedSuperBuilderSimple.Parent build() {
 -				return new JacksonizedSuperBuilderSimple.Parent(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final JacksonizedSuperBuilderSimple.Parent.ParentBuilder<?, ?> b) {
 -			this.field1 = b.field1;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static JacksonizedSuperBuilderSimple.Parent.ParentBuilder<?, ?> builder() {
 -			return new JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl();
 -		}
 -	}
 -	public static void test() {
 -		Parent x = Parent.builder().field1(5).build();
 -	}
 -}
 +//version 8: Jackson deps are at least Java7+. +public class JacksonizedSuperBuilderSimple { +	@com.fasterxml.jackson.annotation.JsonIgnoreProperties(ignoreUnknown = true) +	@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl.class) +	public static class Parent { +		int field1; +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<C extends JacksonizedSuperBuilderSimple.Parent, B extends JacksonizedSuperBuilderSimple.Parent.ParentBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private int field1; +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B field1(final int field1) { +				this.field1 = field1; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "JacksonizedSuperBuilderSimple.Parent.ParentBuilder(field1=" + this.field1 + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		@com.fasterxml.jackson.annotation.JsonIgnoreProperties(ignoreUnknown = true) +		@com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "", buildMethodName = "build") +		static final class ParentBuilderImpl extends JacksonizedSuperBuilderSimple.Parent.ParentBuilder<JacksonizedSuperBuilderSimple.Parent, JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public JacksonizedSuperBuilderSimple.Parent build() { +				return new JacksonizedSuperBuilderSimple.Parent(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final JacksonizedSuperBuilderSimple.Parent.ParentBuilder<?, ?> b) { +			this.field1 = b.field1; +		} +		@java.lang.SuppressWarnings("all") +		public static JacksonizedSuperBuilderSimple.Parent.ParentBuilder<?, ?> builder() { +			return new JacksonizedSuperBuilderSimple.Parent.ParentBuilderImpl(); +		} +	} +	public static void test() { +		Parent x = Parent.builder().field1(5).build(); +	} +} diff --git a/test/transform/resource/after-delombok/JacksonizedSuperBuilderWithJsonDeserialize.java b/test/transform/resource/after-delombok/JacksonizedSuperBuilderWithJsonDeserialize.java index a94d5f5b..1ed38f05 100644 --- a/test/transform/resource/after-delombok/JacksonizedSuperBuilderWithJsonDeserialize.java +++ b/test/transform/resource/after-delombok/JacksonizedSuperBuilderWithJsonDeserialize.java @@ -1,5 +1,4 @@  //skip-idempotent -@lombok.experimental.SuperBuilder  @com.fasterxml.jackson.databind.annotation.JsonDeserialize  public class JacksonizedSuperBuilderWithJsonDeserialize {  	int field1; @@ -11,6 +10,9 @@ public class JacksonizedSuperBuilderWithJsonDeserialize {  		protected abstract B self();  		@java.lang.SuppressWarnings("all")  		public abstract C build(); +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public B field1(final int field1) {  			this.field1 = field1; diff --git a/test/transform/resource/after-delombok/JavadocMultiline.java b/test/transform/resource/after-delombok/JavadocMultiline.java new file mode 100644 index 00000000..cc8b1148 --- /dev/null +++ b/test/transform/resource/after-delombok/JavadocMultiline.java @@ -0,0 +1,51 @@ +class JavadocMultiline { +    /** +     * This is a list of booleans. +     */ +    private java.util.List<Boolean> booleans; +    /** +     * This is a list of booleans. +     */ +    private java.util.List<Boolean> booleans2; + +    /** +     * This is a list of booleans. +     * +     * @return A list of booleans to set for this object. This is a Javadoc return that is long +     *         enough to wrap to multiple lines. +     */ +    @java.lang.SuppressWarnings("all") +    public java.util.List<Boolean> getBooleans() { +        return this.booleans; +    } + +    /** +     * This is a list of booleans. +     */ +    @java.lang.SuppressWarnings("all") +    public java.util.List<Boolean> getBooleans2() { +        return this.booleans2; +    } + +    /** +     * This is a list of booleans. +     * +     * @param booleans A list of booleans to set for this object. This is a Javadoc param that is +     *        long enough to wrap to multiple lines. +     */ +    @java.lang.SuppressWarnings("all") +    public void setBooleans(final java.util.List<Boolean> booleans) { +        this.booleans = booleans; +    } + +    /** +     * This is a list of booleans. +     * +     * @param booleans A list of booleans to set for this object. This is a Javadoc param that is +     *        long enough to wrap to multiple lines. +     */ +    @java.lang.SuppressWarnings("all") +    public void setBooleans2(final java.util.List<Boolean> booleans2) { +        this.booleans2 = booleans2; +    } +}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/LoggerLog4j2.java b/test/transform/resource/after-delombok/LoggerLog4j2.java index b32c7722..cba516f2 100644 --- a/test/transform/resource/after-delombok/LoggerLog4j2.java +++ b/test/transform/resource/after-delombok/LoggerLog4j2.java @@ -1,3 +1,4 @@ +//version 8:  class LoggerLog4j2 {  	@java.lang.SuppressWarnings("all")  	private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LoggerLog4j2.class); diff --git a/test/transform/resource/after-delombok/LoggerSlf4j.java b/test/transform/resource/after-delombok/LoggerSlf4j.java index 70f11ae4..152c8708 100644 --- a/test/transform/resource/after-delombok/LoggerSlf4j.java +++ b/test/transform/resource/after-delombok/LoggerSlf4j.java @@ -29,8 +29,3 @@ class LoggerSlf4jWithTwoStaticFields {  	private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jWithTwoStaticFields.TOPIC + LoggerSlf4jWithTwoStaticFields.TOPIC);  	static final String TOPIC = "StaticField";  } - -class LoggerSlf4jWithTwoLiterals { -	@java.lang.SuppressWarnings("all") -	private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger("A" + "B"); -}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/LoggerSlf4jInvalidTopic.java b/test/transform/resource/after-delombok/LoggerSlf4jInvalidTopic.java deleted file mode 100644 index 86e6ae2c..00000000 --- a/test/transform/resource/after-delombok/LoggerSlf4jInvalidTopic.java +++ /dev/null @@ -1,5 +0,0 @@ -import lombok.extern.slf4j.Slf4j; - -@Slf4j(topic = 42) -class LoggerSlf4jWithIntegerTopic { -}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/NonNullOnParameter.java b/test/transform/resource/after-delombok/NonNullOnParameter.java index 4f6df920..95fd13ec 100644 --- a/test/transform/resource/after-delombok/NonNullOnParameter.java +++ b/test/transform/resource/after-delombok/NonNullOnParameter.java @@ -1,3 +1,4 @@ +//version 8:  class NonNullOnParameter extends Thread {  	NonNullOnParameter(@lombok.NonNull String arg) {  		this(arg, ""); diff --git a/test/transform/resource/after-delombok/NonNullOnParameterAbstract.java b/test/transform/resource/after-delombok/NonNullOnParameterAbstract.java index 88577f25..df496931 100644 --- a/test/transform/resource/after-delombok/NonNullOnParameterAbstract.java +++ b/test/transform/resource/after-delombok/NonNullOnParameterAbstract.java @@ -1,3 +1,4 @@ +//version 8:  abstract class NonNullOnParameterAbstract {  	public void test(@lombok.NonNull String arg) {  		if (arg == null) { diff --git a/test/transform/resource/after-delombok/NonNullPlain.java b/test/transform/resource/after-delombok/NonNullPlain.java index 24377237..9fc29042 100644 --- a/test/transform/resource/after-delombok/NonNullPlain.java +++ b/test/transform/resource/after-delombok/NonNullPlain.java @@ -1,3 +1,4 @@ +//version 8:  import java.lang.annotation.*;  class NonNullPlain {  	@lombok.NonNull diff --git a/test/transform/resource/after-delombok/NonNullTypeUse.java b/test/transform/resource/after-delombok/NonNullTypeUse.java index 7c438501..b80a6da8 100644 --- a/test/transform/resource/after-delombok/NonNullTypeUse.java +++ b/test/transform/resource/after-delombok/NonNullTypeUse.java @@ -1,3 +1,4 @@ +//version 8:  import lombok.NonNull;  class NonNullTypeUse {  	void test1(@NonNull String[][][] args) { diff --git a/test/transform/resource/after-delombok/NonNullWithAlternateException.java b/test/transform/resource/after-delombok/NonNullWithAlternateException.java index 7f30fd1f..e76feca2 100644 --- a/test/transform/resource/after-delombok/NonNullWithAlternateException.java +++ b/test/transform/resource/after-delombok/NonNullWithAlternateException.java @@ -1,3 +1,4 @@ +//version 8:  public class NonNullWithAlternateException {  	@lombok.NonNull  	private String test; diff --git a/test/transform/resource/after-delombok/NonNullWithAssertion.java b/test/transform/resource/after-delombok/NonNullWithAssertion.java index 15dc0254..318d85b9 100644 --- a/test/transform/resource/after-delombok/NonNullWithAssertion.java +++ b/test/transform/resource/after-delombok/NonNullWithAssertion.java @@ -1,3 +1,4 @@ +//version 8:  public class NonNullWithAssertion {  	@lombok.NonNull  	private String test; diff --git a/test/transform/resource/after-delombok/NonNullWithGuava.java b/test/transform/resource/after-delombok/NonNullWithGuava.java index b3c13d30..efa5878e 100644 --- a/test/transform/resource/after-delombok/NonNullWithGuava.java +++ b/test/transform/resource/after-delombok/NonNullWithGuava.java @@ -1,3 +1,4 @@ +//version 8:  import static com.google.common.base.Preconditions.*;  public class NonNullWithGuava {  	@lombok.NonNull diff --git a/test/transform/resource/after-delombok/NonNullWithJdk.java b/test/transform/resource/after-delombok/NonNullWithJdk.java index d7e2958c..725d90c7 100644 --- a/test/transform/resource/after-delombok/NonNullWithJdk.java +++ b/test/transform/resource/after-delombok/NonNullWithJdk.java @@ -1,4 +1,4 @@ -//version 7: +//version 8:  import static java.util.Objects.*;  public class NonNullWithJdk {  	@lombok.NonNull diff --git a/test/transform/resource/after-delombok/NonNullWithSneakyThrows.java b/test/transform/resource/after-delombok/NonNullWithSneakyThrows.java index 44640164..cd7f8092 100644 --- a/test/transform/resource/after-delombok/NonNullWithSneakyThrows.java +++ b/test/transform/resource/after-delombok/NonNullWithSneakyThrows.java @@ -1,3 +1,4 @@ +//version 8:  class NonNullWithSneakyThrows {  	void test(@lombok.NonNull String in) {  		try { diff --git a/test/transform/resource/after-delombok/NullAnnotatedCheckerFrameworkSuperBuilder.java b/test/transform/resource/after-delombok/NullAnnotatedCheckerFrameworkSuperBuilder.java new file mode 100644 index 00000000..25a76c6d --- /dev/null +++ b/test/transform/resource/after-delombok/NullAnnotatedCheckerFrameworkSuperBuilder.java @@ -0,0 +1,237 @@ +//version 8: +//CONF: lombok.addNullAnnotations = checkerframework +import java.util.List; + +class NullAnnotatedCheckerFrameworkSuperBuilder { + +	public static class Parent { +		int x; +		int y; +		int z; +		List<String> names; + +		@java.lang.SuppressWarnings("all") +		private static int $default$x() { +			return 5; +		} + + +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<C extends NullAnnotatedCheckerFrameworkSuperBuilder.Parent, B extends NullAnnotatedCheckerFrameworkSuperBuilder.Parent.ParentBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private boolean x$set; +			@java.lang.SuppressWarnings("all") +			private int x$value; +			@java.lang.SuppressWarnings("all") +			private int y; +			@java.lang.SuppressWarnings("all") +			private int z; +			@java.lang.SuppressWarnings("all") +			private java.util.ArrayList<String> names; + +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); + +			@java.lang.SuppressWarnings("all") +			public abstract C build(); + +			/** +			 * @return {@code this}. +			 */ +			@org.checkerframework.checker.nullness.qual.NonNull +			@java.lang.SuppressWarnings("all") +			public B x(final int x) { +				this.x$value = x; +				x$set = true; +				return self(); +			} + +			/** +			 * @return {@code this}. +			 */ +			@org.checkerframework.checker.nullness.qual.NonNull +			@java.lang.SuppressWarnings("all") +			public B y(final int y) { +				this.y = y; +				return self(); +			} + +			/** +			 * @return {@code this}. +			 */ +			@org.checkerframework.checker.nullness.qual.NonNull +			@java.lang.SuppressWarnings("all") +			public B z(final int z) { +				this.z = z; +				return self(); +			} + +			@org.checkerframework.checker.nullness.qual.NonNull +			@java.lang.SuppressWarnings("all") +			public B name(final String name) { +				if (this.names == null) this.names = new java.util.ArrayList<String>(); +				this.names.add(name); +				return self(); +			} + +			@org.checkerframework.checker.nullness.qual.NonNull +			@java.lang.SuppressWarnings("all") +			public B names(final java.util.@org.checkerframework.checker.nullness.qual.NonNull Collection<? extends String> names) { +				if (names == null) { +					throw new java.lang.NullPointerException("names cannot be null"); +				} +				if (this.names == null) this.names = new java.util.ArrayList<String>(); +				this.names.addAll(names); +				return self(); +			} + +			@org.checkerframework.checker.nullness.qual.NonNull +			@java.lang.SuppressWarnings("all") +			public B clearNames() { +				if (this.names != null) this.names.clear(); +				return self(); +			} + +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.@org.checkerframework.checker.nullness.qual.NonNull String toString() { +				return "NullAnnotatedCheckerFrameworkSuperBuilder.Parent.ParentBuilder(x$value=" + this.x$value + ", y=" + this.y + ", z=" + this.z + ", names=" + this.names + ")"; +			} +		} + + +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl extends NullAnnotatedCheckerFrameworkSuperBuilder.Parent.ParentBuilder<NullAnnotatedCheckerFrameworkSuperBuilder.Parent, NullAnnotatedCheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} + +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected NullAnnotatedCheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl self() { +				return this; +			} + +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public NullAnnotatedCheckerFrameworkSuperBuilder.@org.checkerframework.checker.nullness.qual.NonNull Parent build() { +				return new NullAnnotatedCheckerFrameworkSuperBuilder.Parent(this); +			} +		} + +		@java.lang.SuppressWarnings("all") +		protected Parent(final NullAnnotatedCheckerFrameworkSuperBuilder.Parent.ParentBuilder<?, ?> b) { +			if (b.x$set) this.x = b.x$value; +			 else this.x = NullAnnotatedCheckerFrameworkSuperBuilder.Parent.$default$x(); +			this.y = b.y; +			this.z = b.z; +			java.util.List<String> names; +			switch (b.names == null ? 0 : b.names.size()) { +			case 0:  +				names = java.util.Collections.emptyList(); +				break; +			case 1:  +				names = java.util.Collections.singletonList(b.names.get(0)); +				break; +			default:  +				names = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.names)); +			} +			this.names = names; +		} + +		@java.lang.SuppressWarnings("all") +		public static NullAnnotatedCheckerFrameworkSuperBuilder.Parent.@org.checkerframework.checker.nullness.qual.NonNull ParentBuilder<?, ?> builder() { +			return new NullAnnotatedCheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl(); +		} +	} + + +	public static class ZChild extends Parent { +		int a; +		int b; + +		@java.lang.SuppressWarnings("all") +		private static int $default$a() { +			return 1; +		} + + +		@java.lang.SuppressWarnings("all") +		public static abstract class ZChildBuilder<C extends NullAnnotatedCheckerFrameworkSuperBuilder.ZChild, B extends NullAnnotatedCheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> { +			@java.lang.SuppressWarnings("all") +			private boolean a$set; +			@java.lang.SuppressWarnings("all") +			private int a$value; +			@java.lang.SuppressWarnings("all") +			private int b; + +			@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}. +			 */ +			@org.checkerframework.checker.nullness.qual.NonNull +			@java.lang.SuppressWarnings("all") +			public B a(final int a) { +				this.a$value = a; +				a$set = true; +				return self(); +			} + +			/** +			 * @return {@code this}. +			 */ +			@org.checkerframework.checker.nullness.qual.NonNull +			@java.lang.SuppressWarnings("all") +			public B b(final int b) { +				this.b = b; +				return self(); +			} + +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.@org.checkerframework.checker.nullness.qual.NonNull String toString() { +				return "NullAnnotatedCheckerFrameworkSuperBuilder.ZChild.ZChildBuilder(super=" + super.toString() + ", a$value=" + this.a$value + ", b=" + this.b + ")"; +			} +		} + + +		@java.lang.SuppressWarnings("all") +		private static final class ZChildBuilderImpl extends NullAnnotatedCheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<NullAnnotatedCheckerFrameworkSuperBuilder.ZChild, NullAnnotatedCheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ZChildBuilderImpl() { +			} + +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected NullAnnotatedCheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl self() { +				return this; +			} + +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public NullAnnotatedCheckerFrameworkSuperBuilder.@org.checkerframework.checker.nullness.qual.NonNull ZChild build() { +				return new NullAnnotatedCheckerFrameworkSuperBuilder.ZChild(this); +			} +		} + +		@java.lang.SuppressWarnings("all") +		protected ZChild(final NullAnnotatedCheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<?, ?> b) { +			super(b); +			if (b.a$set) this.a = b.a$value; +			 else this.a = NullAnnotatedCheckerFrameworkSuperBuilder.ZChild.$default$a(); +			this.b = b.b; +		} + +		@java.lang.SuppressWarnings("all") +		public static NullAnnotatedCheckerFrameworkSuperBuilder.ZChild.@org.checkerframework.checker.nullness.qual.NonNull ZChildBuilder<?, ?> builder() { +			return new NullAnnotatedCheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl(); +		} +	} +} diff --git a/test/transform/resource/after-delombok/NullLibrary1.java b/test/transform/resource/after-delombok/NullLibrary1.java index e426e3d3..e299be3d 100644 --- a/test/transform/resource/after-delombok/NullLibrary1.java +++ b/test/transform/resource/after-delombok/NullLibrary1.java @@ -1,3 +1,4 @@ +//version 8:  public class NullLibrary1 {  	String foo;  	@java.lang.Override @@ -34,6 +35,9 @@ public class NullLibrary1 {  	public NullLibrary1(final String foo) {  		this.foo = foo;  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@org.eclipse.jdt.annotation.NonNull  	@java.lang.SuppressWarnings("all")  	public NullLibrary1 withFoo(final String foo) { diff --git a/test/transform/resource/after-delombok/NullLibrary2.java b/test/transform/resource/after-delombok/NullLibrary2.java index 8f48c8a5..fec143c2 100644 --- a/test/transform/resource/after-delombok/NullLibrary2.java +++ b/test/transform/resource/after-delombok/NullLibrary2.java @@ -1,3 +1,4 @@ +//version 8: springframework dep is too new to run on j6  public class NullLibrary2 {  	String foo;  	@java.lang.Override @@ -35,6 +36,9 @@ public class NullLibrary2 {  	public NullLibrary2(final String foo) {  		this.foo = foo;  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@org.springframework.lang.NonNull  	@java.lang.SuppressWarnings("all")  	public NullLibrary2 withFoo(final String foo) { diff --git a/test/transform/resource/after-delombok/SetterOnClass.java b/test/transform/resource/after-delombok/SetterOnClass.java index 24f376cb..d95a280f 100644 --- a/test/transform/resource/after-delombok/SetterOnClass.java +++ b/test/transform/resource/after-delombok/SetterOnClass.java @@ -1,3 +1,4 @@ +//version 8:  class SetterOnClass1 {  	boolean isNone;  	boolean isPublic; diff --git a/test/transform/resource/after-delombok/StaticConstructor.java b/test/transform/resource/after-delombok/StaticConstructor.java index f9c862d7..4de6dbe5 100644 --- a/test/transform/resource/after-delombok/StaticConstructor.java +++ b/test/transform/resource/after-delombok/StaticConstructor.java @@ -1,3 +1,4 @@ +//version 8:  public class StaticConstructor {  	String name;  	@java.lang.SuppressWarnings("all") diff --git a/test/transform/resource/after-delombok/SuperBuilderAbstract.java b/test/transform/resource/after-delombok/SuperBuilderAbstract.java index a5825bf4..727c5beb 100644 --- a/test/transform/resource/after-delombok/SuperBuilderAbstract.java +++ b/test/transform/resource/after-delombok/SuperBuilderAbstract.java @@ -1,129 +1,138 @@ -public class SuperBuilderAbstract {
 -	public static class Parent {
 -		int parentField;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<C extends SuperBuilderAbstract.Parent, B extends SuperBuilderAbstract.Parent.ParentBuilder<C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private int parentField;
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B parentField(final int parentField) {
 -				this.parentField = parentField;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderAbstract.Parent.ParentBuilder(parentField=" + this.parentField + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl extends SuperBuilderAbstract.Parent.ParentBuilder<SuperBuilderAbstract.Parent, SuperBuilderAbstract.Parent.ParentBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderAbstract.Parent.ParentBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderAbstract.Parent build() {
 -				return new SuperBuilderAbstract.Parent(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderAbstract.Parent.ParentBuilder<?, ?> b) {
 -			this.parentField = b.parentField;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderAbstract.Parent.ParentBuilder<?, ?> builder() {
 -			return new SuperBuilderAbstract.Parent.ParentBuilderImpl();
 -		}
 -	}
 -	public static abstract class Child extends Parent {
 -		double childField;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<C extends SuperBuilderAbstract.Child, B extends SuperBuilderAbstract.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private double childField;
 -			@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 childField(final double childField) {
 -				this.childField = childField;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderAbstract.Child.ChildBuilder(super=" + super.toString() + ", childField=" + this.childField + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderAbstract.Child.ChildBuilder<?, ?> b) {
 -			super(b);
 -			this.childField = b.childField;
 -		}
 -	}
 -	public static class GrandChild extends Child {
 -		String grandChildField;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class GrandChildBuilder<C extends SuperBuilderAbstract.GrandChild, B extends SuperBuilderAbstract.GrandChild.GrandChildBuilder<C, B>> extends Child.ChildBuilder<C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private String grandChildField;
 -			@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 grandChildField(final String grandChildField) {
 -				this.grandChildField = grandChildField;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderAbstract.GrandChild.GrandChildBuilder(super=" + super.toString() + ", grandChildField=" + this.grandChildField + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class GrandChildBuilderImpl extends SuperBuilderAbstract.GrandChild.GrandChildBuilder<SuperBuilderAbstract.GrandChild, SuperBuilderAbstract.GrandChild.GrandChildBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private GrandChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderAbstract.GrandChild.GrandChildBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderAbstract.GrandChild build() {
 -				return new SuperBuilderAbstract.GrandChild(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected GrandChild(final SuperBuilderAbstract.GrandChild.GrandChildBuilder<?, ?> b) {
 -			super(b);
 -			this.grandChildField = b.grandChildField;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderAbstract.GrandChild.GrandChildBuilder<?, ?> builder() {
 -			return new SuperBuilderAbstract.GrandChild.GrandChildBuilderImpl();
 -		}
 -	}
 -	public static void test() {
 -		GrandChild x = GrandChild.builder().grandChildField("").parentField(5).childField(2.5).build();
 -	}
 -}
 +public class SuperBuilderAbstract { +	public static class Parent { +		int parentField; +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<C extends SuperBuilderAbstract.Parent, B extends SuperBuilderAbstract.Parent.ParentBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private int parentField; +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B parentField(final int parentField) { +				this.parentField = parentField; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderAbstract.Parent.ParentBuilder(parentField=" + this.parentField + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl extends SuperBuilderAbstract.Parent.ParentBuilder<SuperBuilderAbstract.Parent, SuperBuilderAbstract.Parent.ParentBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderAbstract.Parent.ParentBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderAbstract.Parent build() { +				return new SuperBuilderAbstract.Parent(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderAbstract.Parent.ParentBuilder<?, ?> b) { +			this.parentField = b.parentField; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderAbstract.Parent.ParentBuilder<?, ?> builder() { +			return new SuperBuilderAbstract.Parent.ParentBuilderImpl(); +		} +	} +	public static abstract class Child extends Parent { +		double childField; +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<C extends SuperBuilderAbstract.Child, B extends SuperBuilderAbstract.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> { +			@java.lang.SuppressWarnings("all") +			private double childField; +			@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 childField(final double childField) { +				this.childField = childField; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderAbstract.Child.ChildBuilder(super=" + super.toString() + ", childField=" + this.childField + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderAbstract.Child.ChildBuilder<?, ?> b) { +			super(b); +			this.childField = b.childField; +		} +	} +	public static class GrandChild extends Child { +		String grandChildField; +		@java.lang.SuppressWarnings("all") +		public static abstract class GrandChildBuilder<C extends SuperBuilderAbstract.GrandChild, B extends SuperBuilderAbstract.GrandChild.GrandChildBuilder<C, B>> extends Child.ChildBuilder<C, B> { +			@java.lang.SuppressWarnings("all") +			private String grandChildField; +			@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 grandChildField(final String grandChildField) { +				this.grandChildField = grandChildField; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderAbstract.GrandChild.GrandChildBuilder(super=" + super.toString() + ", grandChildField=" + this.grandChildField + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class GrandChildBuilderImpl extends SuperBuilderAbstract.GrandChild.GrandChildBuilder<SuperBuilderAbstract.GrandChild, SuperBuilderAbstract.GrandChild.GrandChildBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private GrandChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderAbstract.GrandChild.GrandChildBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderAbstract.GrandChild build() { +				return new SuperBuilderAbstract.GrandChild(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected GrandChild(final SuperBuilderAbstract.GrandChild.GrandChildBuilder<?, ?> b) { +			super(b); +			this.grandChildField = b.grandChildField; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderAbstract.GrandChild.GrandChildBuilder<?, ?> builder() { +			return new SuperBuilderAbstract.GrandChild.GrandChildBuilderImpl(); +		} +	} +	public static void test() { +		GrandChild x = GrandChild.builder().grandChildField("").parentField(5).childField(2.5).build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderAbstractToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderAbstractToBuilder.java index aef3976f..53962c60 100644 --- a/test/transform/resource/after-delombok/SuperBuilderAbstractToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderAbstractToBuilder.java @@ -1,168 +1,177 @@ -public class SuperBuilderAbstractToBuilder {
 -	public static class Parent {
 -		int parentField;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<C extends SuperBuilderAbstractToBuilder.Parent, B extends SuperBuilderAbstractToBuilder.Parent.ParentBuilder<C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private int parentField;
 -			@java.lang.SuppressWarnings("all")
 -			protected B $fillValuesFrom(final C instance) {
 -				SuperBuilderAbstractToBuilder.Parent.ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderAbstractToBuilder.Parent instance, final SuperBuilderAbstractToBuilder.Parent.ParentBuilder<?, ?> b) {
 -				b.parentField(instance.parentField);
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B parentField(final int parentField) {
 -				this.parentField = parentField;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderAbstractToBuilder.Parent.ParentBuilder(parentField=" + this.parentField + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl extends SuperBuilderAbstractToBuilder.Parent.ParentBuilder<SuperBuilderAbstractToBuilder.Parent, SuperBuilderAbstractToBuilder.Parent.ParentBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderAbstractToBuilder.Parent.ParentBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderAbstractToBuilder.Parent build() {
 -				return new SuperBuilderAbstractToBuilder.Parent(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderAbstractToBuilder.Parent.ParentBuilder<?, ?> b) {
 -			this.parentField = b.parentField;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderAbstractToBuilder.Parent.ParentBuilder<?, ?> builder() {
 -			return new SuperBuilderAbstractToBuilder.Parent.ParentBuilderImpl();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public SuperBuilderAbstractToBuilder.Parent.ParentBuilder<?, ?> toBuilder() {
 -			return new SuperBuilderAbstractToBuilder.Parent.ParentBuilderImpl().$fillValuesFrom(this);
 -		}
 -	}
 -	public static abstract class Child extends Parent {
 -		double childField;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<C extends SuperBuilderAbstractToBuilder.Child, B extends SuperBuilderAbstractToBuilder.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private double childField;
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected B $fillValuesFrom(final C instance) {
 -				super.$fillValuesFrom(instance);
 -				SuperBuilderAbstractToBuilder.Child.ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderAbstractToBuilder.Child instance, final SuperBuilderAbstractToBuilder.Child.ChildBuilder<?, ?> b) {
 -				b.childField(instance.childField);
 -			}
 -			@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 childField(final double childField) {
 -				this.childField = childField;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderAbstractToBuilder.Child.ChildBuilder(super=" + super.toString() + ", childField=" + this.childField + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderAbstractToBuilder.Child.ChildBuilder<?, ?> b) {
 -			super(b);
 -			this.childField = b.childField;
 -		}
 -	}
 -	public static class GrandChild extends Child {
 -		String grandChildField;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class GrandChildBuilder<C extends SuperBuilderAbstractToBuilder.GrandChild, B extends SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<C, B>> extends Child.ChildBuilder<C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private String grandChildField;
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected B $fillValuesFrom(final C instance) {
 -				super.$fillValuesFrom(instance);
 -				SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderAbstractToBuilder.GrandChild instance, final SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<?, ?> b) {
 -				b.grandChildField(instance.grandChildField);
 -			}
 -			@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 grandChildField(final String grandChildField) {
 -				this.grandChildField = grandChildField;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder(super=" + super.toString() + ", grandChildField=" + this.grandChildField + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class GrandChildBuilderImpl extends SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<SuperBuilderAbstractToBuilder.GrandChild, SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private GrandChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderAbstractToBuilder.GrandChild build() {
 -				return new SuperBuilderAbstractToBuilder.GrandChild(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected GrandChild(final SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<?, ?> b) {
 -			super(b);
 -			this.grandChildField = b.grandChildField;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<?, ?> builder() {
 -			return new SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilderImpl();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<?, ?> toBuilder() {
 -			return new SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilderImpl().$fillValuesFrom(this);
 -		}
 -	}
 -	public static void test() {
 -		GrandChild x = GrandChild.builder().grandChildField("").parentField(5).childField(2.5).build().toBuilder().build();
 -	}
 -}
 +public class SuperBuilderAbstractToBuilder { +	public static class Parent { +		int parentField; +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<C extends SuperBuilderAbstractToBuilder.Parent, B extends SuperBuilderAbstractToBuilder.Parent.ParentBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private int parentField; +			@java.lang.SuppressWarnings("all") +			protected B $fillValuesFrom(final C instance) { +				SuperBuilderAbstractToBuilder.Parent.ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderAbstractToBuilder.Parent instance, final SuperBuilderAbstractToBuilder.Parent.ParentBuilder<?, ?> b) { +				b.parentField(instance.parentField); +			} +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B parentField(final int parentField) { +				this.parentField = parentField; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderAbstractToBuilder.Parent.ParentBuilder(parentField=" + this.parentField + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl extends SuperBuilderAbstractToBuilder.Parent.ParentBuilder<SuperBuilderAbstractToBuilder.Parent, SuperBuilderAbstractToBuilder.Parent.ParentBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderAbstractToBuilder.Parent.ParentBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderAbstractToBuilder.Parent build() { +				return new SuperBuilderAbstractToBuilder.Parent(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderAbstractToBuilder.Parent.ParentBuilder<?, ?> b) { +			this.parentField = b.parentField; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderAbstractToBuilder.Parent.ParentBuilder<?, ?> builder() { +			return new SuperBuilderAbstractToBuilder.Parent.ParentBuilderImpl(); +		} +		@java.lang.SuppressWarnings("all") +		public SuperBuilderAbstractToBuilder.Parent.ParentBuilder<?, ?> toBuilder() { +			return new SuperBuilderAbstractToBuilder.Parent.ParentBuilderImpl().$fillValuesFrom(this); +		} +	} +	public static abstract class Child extends Parent { +		double childField; +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<C extends SuperBuilderAbstractToBuilder.Child, B extends SuperBuilderAbstractToBuilder.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> { +			@java.lang.SuppressWarnings("all") +			private double childField; +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected B $fillValuesFrom(final C instance) { +				super.$fillValuesFrom(instance); +				SuperBuilderAbstractToBuilder.Child.ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderAbstractToBuilder.Child instance, final SuperBuilderAbstractToBuilder.Child.ChildBuilder<?, ?> b) { +				b.childField(instance.childField); +			} +			@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 childField(final double childField) { +				this.childField = childField; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderAbstractToBuilder.Child.ChildBuilder(super=" + super.toString() + ", childField=" + this.childField + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderAbstractToBuilder.Child.ChildBuilder<?, ?> b) { +			super(b); +			this.childField = b.childField; +		} +	} +	public static class GrandChild extends Child { +		String grandChildField; +		@java.lang.SuppressWarnings("all") +		public static abstract class GrandChildBuilder<C extends SuperBuilderAbstractToBuilder.GrandChild, B extends SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<C, B>> extends Child.ChildBuilder<C, B> { +			@java.lang.SuppressWarnings("all") +			private String grandChildField; +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected B $fillValuesFrom(final C instance) { +				super.$fillValuesFrom(instance); +				SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderAbstractToBuilder.GrandChild instance, final SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<?, ?> b) { +				b.grandChildField(instance.grandChildField); +			} +			@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 grandChildField(final String grandChildField) { +				this.grandChildField = grandChildField; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder(super=" + super.toString() + ", grandChildField=" + this.grandChildField + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class GrandChildBuilderImpl extends SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<SuperBuilderAbstractToBuilder.GrandChild, SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private GrandChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderAbstractToBuilder.GrandChild build() { +				return new SuperBuilderAbstractToBuilder.GrandChild(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected GrandChild(final SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<?, ?> b) { +			super(b); +			this.grandChildField = b.grandChildField; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<?, ?> builder() { +			return new SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilderImpl(); +		} +		@java.lang.SuppressWarnings("all") +		public SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilder<?, ?> toBuilder() { +			return new SuperBuilderAbstractToBuilder.GrandChild.GrandChildBuilderImpl().$fillValuesFrom(this); +		} +	} +	public static void test() { +		GrandChild x = GrandChild.builder().grandChildField("").parentField(5).childField(2.5).build().toBuilder().build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderBasic.java b/test/transform/resource/after-delombok/SuperBuilderBasic.java index c3fa86f2..7fff2ef8 100644 --- a/test/transform/resource/after-delombok/SuperBuilderBasic.java +++ b/test/transform/resource/after-delombok/SuperBuilderBasic.java @@ -1,136 +1,142 @@ -import java.util.List;
 -public class SuperBuilderBasic {
 -	public static class Parent {
 -		int field1;
 -		List<String> items;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<C extends SuperBuilderBasic.Parent, B extends SuperBuilderBasic.Parent.ParentBuilder<C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private int field1;
 -			@java.lang.SuppressWarnings("all")
 -			private java.util.ArrayList<String> items;
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B field1(final int field1) {
 -				this.field1 = field1;
 -				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);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B items(final java.util.Collection<? extends String> items) {
 -				if (items == null) {
 -					throw new java.lang.NullPointerException("items cannot be null");
 -				}
 -				if (this.items == null) this.items = new java.util.ArrayList<String>();
 -				this.items.addAll(items);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B clearItems() {
 -				if (this.items != null) this.items.clear();
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderBasic.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl extends SuperBuilderBasic.Parent.ParentBuilder<SuperBuilderBasic.Parent, SuperBuilderBasic.Parent.ParentBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderBasic.Parent.ParentBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderBasic.Parent build() {
 -				return new SuperBuilderBasic.Parent(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderBasic.Parent.ParentBuilder<?, ?> b) {
 -			this.field1 = b.field1;
 -			java.util.List<String> items;
 -			switch (b.items == null ? 0 : b.items.size()) {
 -			case 0: 
 -				items = java.util.Collections.emptyList();
 -				break;
 -			case 1: 
 -				items = java.util.Collections.singletonList(b.items.get(0));
 -				break;
 -			default: 
 -				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
 -			}
 -			this.items = items;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderBasic.Parent.ParentBuilder<?, ?> builder() {
 -			return new SuperBuilderBasic.Parent.ParentBuilderImpl();
 -		}
 -	}
 -	public static class Child extends SuperBuilderBasic.Parent {
 -		double field3;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<C extends SuperBuilderBasic.Child, B extends SuperBuilderBasic.Child.ChildBuilder<C, B>> extends SuperBuilderBasic.Parent.ParentBuilder<C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private double field3;
 -			@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 field3(final double field3) {
 -				this.field3 = field3;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderBasic.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ChildBuilderImpl extends SuperBuilderBasic.Child.ChildBuilder<SuperBuilderBasic.Child, SuperBuilderBasic.Child.ChildBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderBasic.Child.ChildBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderBasic.Child build() {
 -				return new SuperBuilderBasic.Child(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderBasic.Child.ChildBuilder<?, ?> b) {
 -			super(b);
 -			this.field3 = b.field3;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderBasic.Child.ChildBuilder<?, ?> builder() {
 -			return new SuperBuilderBasic.Child.ChildBuilderImpl();
 -		}
 -	}
 -	public static void test() {
 -		Child x = Child.builder().field3(0.0).field1(5).item("").build();
 -	}
 -}
 +import java.util.List; +public class SuperBuilderBasic { +	public static class Parent { +		int field1; +		List<String> items; +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<C extends SuperBuilderBasic.Parent, B extends SuperBuilderBasic.Parent.ParentBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private int field1; +			@java.lang.SuppressWarnings("all") +			private java.util.ArrayList<String> items; +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B field1(final int field1) { +				this.field1 = field1; +				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); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B items(final java.util.Collection<? extends String> items) { +				if (items == null) { +					throw new java.lang.NullPointerException("items cannot be null"); +				} +				if (this.items == null) this.items = new java.util.ArrayList<String>(); +				this.items.addAll(items); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B clearItems() { +				if (this.items != null) this.items.clear(); +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderBasic.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl extends SuperBuilderBasic.Parent.ParentBuilder<SuperBuilderBasic.Parent, SuperBuilderBasic.Parent.ParentBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderBasic.Parent.ParentBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderBasic.Parent build() { +				return new SuperBuilderBasic.Parent(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderBasic.Parent.ParentBuilder<?, ?> b) { +			this.field1 = b.field1; +			java.util.List<String> items; +			switch (b.items == null ? 0 : b.items.size()) { +			case 0:  +				items = java.util.Collections.emptyList(); +				break; +			case 1:  +				items = java.util.Collections.singletonList(b.items.get(0)); +				break; +			default:  +				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items)); +			} +			this.items = items; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderBasic.Parent.ParentBuilder<?, ?> builder() { +			return new SuperBuilderBasic.Parent.ParentBuilderImpl(); +		} +	} +	public static class Child extends SuperBuilderBasic.Parent { +		double field3; +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<C extends SuperBuilderBasic.Child, B extends SuperBuilderBasic.Child.ChildBuilder<C, B>> extends SuperBuilderBasic.Parent.ParentBuilder<C, B> { +			@java.lang.SuppressWarnings("all") +			private double 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 "SuperBuilderBasic.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ChildBuilderImpl extends SuperBuilderBasic.Child.ChildBuilder<SuperBuilderBasic.Child, SuperBuilderBasic.Child.ChildBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderBasic.Child.ChildBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderBasic.Child build() { +				return new SuperBuilderBasic.Child(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderBasic.Child.ChildBuilder<?, ?> b) { +			super(b); +			this.field3 = b.field3; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderBasic.Child.ChildBuilder<?, ?> builder() { +			return new SuperBuilderBasic.Child.ChildBuilderImpl(); +		} +	} +	public static void test() { +		Child x = Child.builder().field3(0.0).field1(5).item("").build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java index c0a80f93..add6f841 100644 --- a/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderBasicToBuilder.java @@ -1,201 +1,216 @@ -import java.util.List;
 -public class SuperBuilderBasicToBuilder {
 -	public static class Parent {
 -		private int field1;
 -		int obtainViaField;
 -		int obtainViaMethod;
 -		String obtainViaStaticMethod;
 -		List<String> items;
 -		private int method() {
 -			return 2;
 -		}
 -		private static String staticMethod(Parent instance) {
 -			return "staticMethod";
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<C extends SuperBuilderBasicToBuilder.Parent, B extends SuperBuilderBasicToBuilder.Parent.ParentBuilder<C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private int field1;
 -			@java.lang.SuppressWarnings("all")
 -			private int obtainViaField;
 -			@java.lang.SuppressWarnings("all")
 -			private int obtainViaMethod;
 -			@java.lang.SuppressWarnings("all")
 -			private String obtainViaStaticMethod;
 -			@java.lang.SuppressWarnings("all")
 -			private java.util.ArrayList<String> items;
 -			@java.lang.SuppressWarnings("all")
 -			protected B $fillValuesFrom(final C instance) {
 -				SuperBuilderBasicToBuilder.Parent.ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderBasicToBuilder.Parent instance, final SuperBuilderBasicToBuilder.Parent.ParentBuilder<?, ?> b) {
 -				b.field1(instance.field1);
 -				b.obtainViaField(instance.field1);
 -				b.obtainViaMethod(instance.method());
 -				b.obtainViaStaticMethod(SuperBuilderBasicToBuilder.Parent.staticMethod(instance));
 -				b.items(instance.items == null ? java.util.Collections.emptyList() : instance.items);
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B field1(final int field1) {
 -				this.field1 = field1;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B obtainViaField(final int obtainViaField) {
 -				this.obtainViaField = obtainViaField;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B obtainViaMethod(final int obtainViaMethod) {
 -				this.obtainViaMethod = obtainViaMethod;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B obtainViaStaticMethod(final String obtainViaStaticMethod) {
 -				this.obtainViaStaticMethod = obtainViaStaticMethod;
 -				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);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B items(final java.util.Collection<? extends String> items) {
 -				if (items == null) {
 -					throw new java.lang.NullPointerException("items cannot be null");
 -				}
 -				if (this.items == null) this.items = new java.util.ArrayList<String>();
 -				this.items.addAll(items);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B clearItems() {
 -				if (this.items != null) this.items.clear();
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderBasicToBuilder.Parent.ParentBuilder(field1=" + this.field1 + ", obtainViaField=" + this.obtainViaField + ", obtainViaMethod=" + this.obtainViaMethod + ", obtainViaStaticMethod=" + this.obtainViaStaticMethod + ", items=" + this.items + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl extends SuperBuilderBasicToBuilder.Parent.ParentBuilder<SuperBuilderBasicToBuilder.Parent, SuperBuilderBasicToBuilder.Parent.ParentBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderBasicToBuilder.Parent.ParentBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderBasicToBuilder.Parent build() {
 -				return new SuperBuilderBasicToBuilder.Parent(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderBasicToBuilder.Parent.ParentBuilder<?, ?> b) {
 -			this.field1 = b.field1;
 -			this.obtainViaField = b.obtainViaField;
 -			this.obtainViaMethod = b.obtainViaMethod;
 -			this.obtainViaStaticMethod = b.obtainViaStaticMethod;
 -			java.util.List<String> items;
 -			switch (b.items == null ? 0 : b.items.size()) {
 -			case 0: 
 -				items = java.util.Collections.emptyList();
 -				break;
 -			case 1: 
 -				items = java.util.Collections.singletonList(b.items.get(0));
 -				break;
 -			default: 
 -				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
 -			}
 -			this.items = items;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderBasicToBuilder.Parent.ParentBuilder<?, ?> builder() {
 -			return new SuperBuilderBasicToBuilder.Parent.ParentBuilderImpl();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public SuperBuilderBasicToBuilder.Parent.ParentBuilder<?, ?> toBuilder() {
 -			return new SuperBuilderBasicToBuilder.Parent.ParentBuilderImpl().$fillValuesFrom(this);
 -		}
 -	}
 -	public static class Child extends Parent {
 -		private double field3;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<C extends SuperBuilderBasicToBuilder.Child, B extends SuperBuilderBasicToBuilder.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<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);
 -				SuperBuilderBasicToBuilder.Child.ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderBasicToBuilder.Child instance, final SuperBuilderBasicToBuilder.Child.ChildBuilder<?, ?> 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();
 -			@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 "SuperBuilderBasicToBuilder.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ChildBuilderImpl extends SuperBuilderBasicToBuilder.Child.ChildBuilder<SuperBuilderBasicToBuilder.Child, SuperBuilderBasicToBuilder.Child.ChildBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderBasicToBuilder.Child.ChildBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderBasicToBuilder.Child build() {
 -				return new SuperBuilderBasicToBuilder.Child(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderBasicToBuilder.Child.ChildBuilder<?, ?> b) {
 -			super(b);
 -			this.field3 = b.field3;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderBasicToBuilder.Child.ChildBuilder<?, ?> builder() {
 -			return new SuperBuilderBasicToBuilder.Child.ChildBuilderImpl();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public SuperBuilderBasicToBuilder.Child.ChildBuilder<?, ?> toBuilder() {
 -			return new SuperBuilderBasicToBuilder.Child.ChildBuilderImpl().$fillValuesFrom(this);
 -		}
 -	}
 -	public static void test() {
 -		Child x = Child.builder().field3(0.0).field1(5).item("").build().toBuilder().build();
 -	}
 -}
 +import java.util.List; +public class SuperBuilderBasicToBuilder { +	public static class Parent { +		private int field1; +		int obtainViaField; +		int obtainViaMethod; +		String obtainViaStaticMethod; +		List<String> items; +		private int method() { +			return 2; +		} +		private static String staticMethod(Parent instance) { +			return "staticMethod"; +		} +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<C extends SuperBuilderBasicToBuilder.Parent, B extends SuperBuilderBasicToBuilder.Parent.ParentBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private int field1; +			@java.lang.SuppressWarnings("all") +			private int obtainViaField; +			@java.lang.SuppressWarnings("all") +			private int obtainViaMethod; +			@java.lang.SuppressWarnings("all") +			private String obtainViaStaticMethod; +			@java.lang.SuppressWarnings("all") +			private java.util.ArrayList<String> items; +			@java.lang.SuppressWarnings("all") +			protected B $fillValuesFrom(final C instance) { +				SuperBuilderBasicToBuilder.Parent.ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderBasicToBuilder.Parent instance, final SuperBuilderBasicToBuilder.Parent.ParentBuilder<?, ?> b) { +				b.field1(instance.field1); +				b.obtainViaField(instance.field1); +				b.obtainViaMethod(instance.method()); +				b.obtainViaStaticMethod(SuperBuilderBasicToBuilder.Parent.staticMethod(instance)); +				b.items(instance.items == null ? java.util.Collections.<String>emptyList() : instance.items); +			} +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B field1(final int field1) { +				this.field1 = field1; +				return self(); +			} +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B obtainViaField(final int obtainViaField) { +				this.obtainViaField = obtainViaField; +				return self(); +			} +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B obtainViaMethod(final int obtainViaMethod) { +				this.obtainViaMethod = obtainViaMethod; +				return self(); +			} +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B obtainViaStaticMethod(final String obtainViaStaticMethod) { +				this.obtainViaStaticMethod = obtainViaStaticMethod; +				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); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B items(final java.util.Collection<? extends String> items) { +				if (items == null) { +					throw new java.lang.NullPointerException("items cannot be null"); +				} +				if (this.items == null) this.items = new java.util.ArrayList<String>(); +				this.items.addAll(items); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B clearItems() { +				if (this.items != null) this.items.clear(); +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderBasicToBuilder.Parent.ParentBuilder(field1=" + this.field1 + ", obtainViaField=" + this.obtainViaField + ", obtainViaMethod=" + this.obtainViaMethod + ", obtainViaStaticMethod=" + this.obtainViaStaticMethod + ", items=" + this.items + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl extends SuperBuilderBasicToBuilder.Parent.ParentBuilder<SuperBuilderBasicToBuilder.Parent, SuperBuilderBasicToBuilder.Parent.ParentBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderBasicToBuilder.Parent.ParentBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderBasicToBuilder.Parent build() { +				return new SuperBuilderBasicToBuilder.Parent(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderBasicToBuilder.Parent.ParentBuilder<?, ?> b) { +			this.field1 = b.field1; +			this.obtainViaField = b.obtainViaField; +			this.obtainViaMethod = b.obtainViaMethod; +			this.obtainViaStaticMethod = b.obtainViaStaticMethod; +			java.util.List<String> items; +			switch (b.items == null ? 0 : b.items.size()) { +			case 0:  +				items = java.util.Collections.emptyList(); +				break; +			case 1:  +				items = java.util.Collections.singletonList(b.items.get(0)); +				break; +			default:  +				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items)); +			} +			this.items = items; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderBasicToBuilder.Parent.ParentBuilder<?, ?> builder() { +			return new SuperBuilderBasicToBuilder.Parent.ParentBuilderImpl(); +		} +		@java.lang.SuppressWarnings("all") +		public SuperBuilderBasicToBuilder.Parent.ParentBuilder<?, ?> toBuilder() { +			return new SuperBuilderBasicToBuilder.Parent.ParentBuilderImpl().$fillValuesFrom(this); +		} +	} +	public static class Child extends Parent { +		private double field3; +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<C extends SuperBuilderBasicToBuilder.Child, B extends SuperBuilderBasicToBuilder.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<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); +				SuperBuilderBasicToBuilder.Child.ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderBasicToBuilder.Child instance, final SuperBuilderBasicToBuilder.Child.ChildBuilder<?, ?> 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 "SuperBuilderBasicToBuilder.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ChildBuilderImpl extends SuperBuilderBasicToBuilder.Child.ChildBuilder<SuperBuilderBasicToBuilder.Child, SuperBuilderBasicToBuilder.Child.ChildBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderBasicToBuilder.Child.ChildBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderBasicToBuilder.Child build() { +				return new SuperBuilderBasicToBuilder.Child(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderBasicToBuilder.Child.ChildBuilder<?, ?> b) { +			super(b); +			this.field3 = b.field3; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderBasicToBuilder.Child.ChildBuilder<?, ?> builder() { +			return new SuperBuilderBasicToBuilder.Child.ChildBuilderImpl(); +		} +		@java.lang.SuppressWarnings("all") +		public SuperBuilderBasicToBuilder.Child.ChildBuilder<?, ?> toBuilder() { +			return new SuperBuilderBasicToBuilder.Child.ChildBuilderImpl().$fillValuesFrom(this); +		} +	} +	public static void test() { +		Child x = Child.builder().field3(0.0).field1(5).item("").build().toBuilder().build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderCustomized.java b/test/transform/resource/after-delombok/SuperBuilderCustomized.java index f66133c9..3a0bbd9b 100644 --- a/test/transform/resource/after-delombok/SuperBuilderCustomized.java +++ b/test/transform/resource/after-delombok/SuperBuilderCustomized.java @@ -1,100 +1,103 @@ -import java.util.List;
 -public class SuperBuilderCustomized {
 -	public static class Parent {
 -		public static abstract class ParentBuilder<C extends Parent, B extends ParentBuilder<C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private int field1;
 -			public B resetToDefault() {
 -				field1 = 0;
 -				return self();
 -			}
 -			public B field1(int field1) {
 -				this.field1 = field1 + 1;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderCustomized.Parent.ParentBuilder(field1=" + this.field1 + ")";
 -			}
 -		}
 -		int field1;
 -		protected Parent(ParentBuilder<?, ?> b) {
 -			if (b.field1 == 0) throw new IllegalArgumentException("field1 must be != 0");
 -			this.field1 = b.field1;
 -		}
 -		public static SuperBuilderCustomized.Parent.ParentBuilder<?, ?> builder(int field1) {
 -			return new SuperBuilderCustomized.Parent.ParentBuilderImpl().field1(field1);
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl extends SuperBuilderCustomized.Parent.ParentBuilder<SuperBuilderCustomized.Parent, SuperBuilderCustomized.Parent.ParentBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderCustomized.Parent.ParentBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderCustomized.Parent build() {
 -				return new SuperBuilderCustomized.Parent(this);
 -			}
 -		}
 -	}
 -	public static class Child extends Parent {
 -		private static final class ChildBuilderImpl extends ChildBuilder<Child, ChildBuilderImpl> {
 -			@Override
 -			public Child build() {
 -				this.resetToDefault();
 -				return new Child(this);
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			private ChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderCustomized.Child.ChildBuilderImpl self() {
 -				return this;
 -			}
 -		}
 -		double field2;
 -		public static ChildBuilder<?, ?> builder() {
 -			return new ChildBuilderImpl().field2(10.0);
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<C extends SuperBuilderCustomized.Child, B extends SuperBuilderCustomized.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private double field2;
 -			@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 field2(final double field2) {
 -				this.field2 = field2;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderCustomized.Child.ChildBuilder(super=" + super.toString() + ", field2=" + this.field2 + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderCustomized.Child.ChildBuilder<?, ?> b) {
 -			super(b);
 -			this.field2 = b.field2;
 -		}
 -	}
 -	public static void test() {
 -		Child x = Child.builder().field2(1.0).field1(5).resetToDefault().build();
 -	}
 -}
 +import java.util.List; +public class SuperBuilderCustomized { +	public static class Parent { +		public static abstract class ParentBuilder<C extends Parent, B extends ParentBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private int field1; +			public B resetToDefault() { +				field1 = 0; +				return self(); +			} +			public B field1(int field1) { +				this.field1 = field1 + 1; +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderCustomized.Parent.ParentBuilder(field1=" + this.field1 + ")"; +			} +		} +		int field1; +		protected Parent(ParentBuilder<?, ?> b) { +			if (b.field1 == 0) throw new IllegalArgumentException("field1 must be != 0"); +			this.field1 = b.field1; +		} +		public static SuperBuilderCustomized.Parent.ParentBuilder<?, ?> builder(int field1) { +			return new SuperBuilderCustomized.Parent.ParentBuilderImpl().field1(field1); +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl extends SuperBuilderCustomized.Parent.ParentBuilder<SuperBuilderCustomized.Parent, SuperBuilderCustomized.Parent.ParentBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderCustomized.Parent.ParentBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderCustomized.Parent build() { +				return new SuperBuilderCustomized.Parent(this); +			} +		} +	} +	public static class Child extends Parent { +		private static final class ChildBuilderImpl extends ChildBuilder<Child, ChildBuilderImpl> { +			@Override +			public Child build() { +				this.resetToDefault(); +				return new Child(this); +			} +			@java.lang.SuppressWarnings("all") +			private ChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderCustomized.Child.ChildBuilderImpl self() { +				return this; +			} +		} +		double field2; +		public static ChildBuilder<?, ?> builder() { +			return new ChildBuilderImpl().field2(10.0); +		} +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<C extends SuperBuilderCustomized.Child, B extends SuperBuilderCustomized.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> { +			@java.lang.SuppressWarnings("all") +			private double field2; +			@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 field2(final double field2) { +				this.field2 = field2; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderCustomized.Child.ChildBuilder(super=" + super.toString() + ", field2=" + this.field2 + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderCustomized.Child.ChildBuilder<?, ?> b) { +			super(b); +			this.field2 = b.field2; +		} +	} +	public static void test() { +		Child x = Child.builder().field2(1.0).field1(5).resetToDefault().build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderCustomizedWithSetterPrefix.java b/test/transform/resource/after-delombok/SuperBuilderCustomizedWithSetterPrefix.java index 8cc5dfe0..cee5ac89 100644 --- a/test/transform/resource/after-delombok/SuperBuilderCustomizedWithSetterPrefix.java +++ b/test/transform/resource/after-delombok/SuperBuilderCustomizedWithSetterPrefix.java @@ -1,50 +1,50 @@ -import java.util.List;
 -public class SuperBuilderCustomizedWithSetterPrefix {
 -	public static class Parent {
 -		public static abstract class ParentBuilder<C extends Parent, B extends ParentBuilder<C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private int field1;
 -			public B setField1(int field1) {
 -				this.field1 = field1 + 1;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilder(field1=" + this.field1 + ")";
 -			}
 -		}
 -		int field1;
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl extends SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilder<SuperBuilderCustomizedWithSetterPrefix.Parent, SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderCustomizedWithSetterPrefix.Parent build() {
 -				return new SuperBuilderCustomizedWithSetterPrefix.Parent(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilder<?, ?> b) {
 -			this.field1 = b.field1;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilder<?, ?> builder() {
 -			return new SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilderImpl();
 -		}
 -	}
 -	public static void test() {
 -		Parent x = Parent.builder().setField1(5).build();
 -	}
 -}
 +import java.util.List; +public class SuperBuilderCustomizedWithSetterPrefix { +	public static class Parent { +		public static abstract class ParentBuilder<C extends Parent, B extends ParentBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private int field1; +			public B setField1(int field1) { +				this.field1 = field1 + 1; +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilder(field1=" + this.field1 + ")"; +			} +		} +		int field1; +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl extends SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilder<SuperBuilderCustomizedWithSetterPrefix.Parent, SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderCustomizedWithSetterPrefix.Parent build() { +				return new SuperBuilderCustomizedWithSetterPrefix.Parent(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilder<?, ?> b) { +			this.field1 = b.field1; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilder<?, ?> builder() { +			return new SuperBuilderCustomizedWithSetterPrefix.Parent.ParentBuilderImpl(); +		} +	} +	public static void test() { +		Parent x = Parent.builder().setField1(5).build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderInitializer.java b/test/transform/resource/after-delombok/SuperBuilderInitializer.java new file mode 100644 index 00000000..95943aa9 --- /dev/null +++ b/test/transform/resource/after-delombok/SuperBuilderInitializer.java @@ -0,0 +1,74 @@ +class SuperBuilderInitializer { + +	public static class One { +		private String world; + +		{ +			world = "Hello"; +		} + +		private static final String world2; + +		static { +			world2 = "Hello"; +		} + + +		@java.lang.SuppressWarnings("all") +		public static abstract class OneBuilder<C extends SuperBuilderInitializer.One, B extends SuperBuilderInitializer.One.OneBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private String world; + +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); + +			@java.lang.SuppressWarnings("all") +			public abstract C build(); + +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B world(final String world) { +				this.world = world; +				return self(); +			} + +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderInitializer.One.OneBuilder(world=" + this.world + ")"; +			} +		} + + +		@java.lang.SuppressWarnings("all") +		private static final class OneBuilderImpl extends SuperBuilderInitializer.One.OneBuilder<SuperBuilderInitializer.One, SuperBuilderInitializer.One.OneBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private OneBuilderImpl() { +			} + +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderInitializer.One.OneBuilderImpl self() { +				return this; +			} + +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderInitializer.One build() { +				return new SuperBuilderInitializer.One(this); +			} +		} + +		@java.lang.SuppressWarnings("all") +		protected One(final SuperBuilderInitializer.One.OneBuilder<?, ?> b) { +			this.world = b.world; +		} + +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderInitializer.One.OneBuilder<?, ?> builder() { +			return new SuperBuilderInitializer.One.OneBuilderImpl(); +		} +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderNameClashes.java b/test/transform/resource/after-delombok/SuperBuilderNameClashes.java index baf47dc4..8cef4e11 100644 --- a/test/transform/resource/after-delombok/SuperBuilderNameClashes.java +++ b/test/transform/resource/after-delombok/SuperBuilderNameClashes.java @@ -1,124 +1,127 @@ -public class SuperBuilderNameClashes {
 -	public static class GenericsClash<B, C, C2> {
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class GenericsClashBuilder<B, C, C2, C3 extends SuperBuilderNameClashes.GenericsClash<B, C, C2>, B2 extends SuperBuilderNameClashes.GenericsClash.GenericsClashBuilder<B, C, C2, C3, B2>> {
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B2 self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C3 build();
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderNameClashes.GenericsClash.GenericsClashBuilder()";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class GenericsClashBuilderImpl<B, C, C2> extends SuperBuilderNameClashes.GenericsClash.GenericsClashBuilder<B, C, C2, SuperBuilderNameClashes.GenericsClash<B, C, C2>, SuperBuilderNameClashes.GenericsClash.GenericsClashBuilderImpl<B, C, C2>> {
 -			@java.lang.SuppressWarnings("all")
 -			private GenericsClashBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderNameClashes.GenericsClash.GenericsClashBuilderImpl<B, C, C2> self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderNameClashes.GenericsClash<B, C, C2> build() {
 -				return new SuperBuilderNameClashes.GenericsClash<B, C, C2>(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected GenericsClash(final SuperBuilderNameClashes.GenericsClash.GenericsClashBuilder<B, C, C2, ?, ?> b) {
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static <B, C, C2> SuperBuilderNameClashes.GenericsClash.GenericsClashBuilder<B, C, C2, ?, ?> builder() {
 -			return new SuperBuilderNameClashes.GenericsClash.GenericsClashBuilderImpl<B, C, C2>();
 -		}
 -	}
 -	public static class B {
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class BBuilder<C extends SuperBuilderNameClashes.B, B2 extends SuperBuilderNameClashes.B.BBuilder<C, B2>> {
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B2 self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderNameClashes.B.BBuilder()";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class BBuilderImpl extends SuperBuilderNameClashes.B.BBuilder<SuperBuilderNameClashes.B, SuperBuilderNameClashes.B.BBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private BBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderNameClashes.B.BBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderNameClashes.B build() {
 -				return new SuperBuilderNameClashes.B(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected B(final SuperBuilderNameClashes.B.BBuilder<?, ?> b) {
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderNameClashes.B.BBuilder<?, ?> builder() {
 -			return new SuperBuilderNameClashes.B.BBuilderImpl();
 -		}
 -	}
 -	public static class C2 {
 -	}
 -	public static class C {
 -		C2 c2;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class CBuilder<C3 extends SuperBuilderNameClashes.C, B extends SuperBuilderNameClashes.C.CBuilder<C3, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private C2 c2;
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C3 build();
 -			@java.lang.SuppressWarnings("all")
 -			public B c2(final C2 c2) {
 -				this.c2 = c2;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderNameClashes.C.CBuilder(c2=" + this.c2 + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class CBuilderImpl extends SuperBuilderNameClashes.C.CBuilder<SuperBuilderNameClashes.C, SuperBuilderNameClashes.C.CBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private CBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderNameClashes.C.CBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderNameClashes.C build() {
 -				return new SuperBuilderNameClashes.C(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected C(final SuperBuilderNameClashes.C.CBuilder<?, ?> b) {
 -			this.c2 = b.c2;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderNameClashes.C.CBuilder<?, ?> builder() {
 -			return new SuperBuilderNameClashes.C.CBuilderImpl();
 -		}
 -	}
 -}
 +public class SuperBuilderNameClashes { +	public static class GenericsClash<B, C, C2> { +		@java.lang.SuppressWarnings("all") +		public static abstract class GenericsClashBuilder<B, C, C2, C3 extends SuperBuilderNameClashes.GenericsClash<B, C, C2>, B2 extends SuperBuilderNameClashes.GenericsClash.GenericsClashBuilder<B, C, C2, C3, B2>> { +			@java.lang.SuppressWarnings("all") +			protected abstract B2 self(); +			@java.lang.SuppressWarnings("all") +			public abstract C3 build(); +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderNameClashes.GenericsClash.GenericsClashBuilder()"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class GenericsClashBuilderImpl<B, C, C2> extends SuperBuilderNameClashes.GenericsClash.GenericsClashBuilder<B, C, C2, SuperBuilderNameClashes.GenericsClash<B, C, C2>, SuperBuilderNameClashes.GenericsClash.GenericsClashBuilderImpl<B, C, C2>> { +			@java.lang.SuppressWarnings("all") +			private GenericsClashBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderNameClashes.GenericsClash.GenericsClashBuilderImpl<B, C, C2> self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderNameClashes.GenericsClash<B, C, C2> build() { +				return new SuperBuilderNameClashes.GenericsClash<B, C, C2>(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected GenericsClash(final SuperBuilderNameClashes.GenericsClash.GenericsClashBuilder<B, C, C2, ?, ?> b) { +		} +		@java.lang.SuppressWarnings("all") +		public static <B, C, C2> SuperBuilderNameClashes.GenericsClash.GenericsClashBuilder<B, C, C2, ?, ?> builder() { +			return new SuperBuilderNameClashes.GenericsClash.GenericsClashBuilderImpl<B, C, C2>(); +		} +	} +	public static class B { +		@java.lang.SuppressWarnings("all") +		public static abstract class BBuilder<C extends SuperBuilderNameClashes.B, B2 extends SuperBuilderNameClashes.B.BBuilder<C, B2>> { +			@java.lang.SuppressWarnings("all") +			protected abstract B2 self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderNameClashes.B.BBuilder()"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class BBuilderImpl extends SuperBuilderNameClashes.B.BBuilder<SuperBuilderNameClashes.B, SuperBuilderNameClashes.B.BBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private BBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderNameClashes.B.BBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderNameClashes.B build() { +				return new SuperBuilderNameClashes.B(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected B(final SuperBuilderNameClashes.B.BBuilder<?, ?> b) { +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderNameClashes.B.BBuilder<?, ?> builder() { +			return new SuperBuilderNameClashes.B.BBuilderImpl(); +		} +	} +	public static class C2 { +	} +	public static class C { +		C2 c2; +		@java.lang.SuppressWarnings("all") +		public static abstract class CBuilder<C3 extends SuperBuilderNameClashes.C, B extends SuperBuilderNameClashes.C.CBuilder<C3, B>> { +			@java.lang.SuppressWarnings("all") +			private C2 c2; +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C3 build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B c2(final C2 c2) { +				this.c2 = c2; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderNameClashes.C.CBuilder(c2=" + this.c2 + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class CBuilderImpl extends SuperBuilderNameClashes.C.CBuilder<SuperBuilderNameClashes.C, SuperBuilderNameClashes.C.CBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private CBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderNameClashes.C.CBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderNameClashes.C build() { +				return new SuperBuilderNameClashes.C(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected C(final SuperBuilderNameClashes.C.CBuilder<?, ?> b) { +			this.c2 = b.c2; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderNameClashes.C.CBuilder<?, ?> builder() { +			return new SuperBuilderNameClashes.C.CBuilderImpl(); +		} +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderNestedGenericTypes.java b/test/transform/resource/after-delombok/SuperBuilderNestedGenericTypes.java index ad738c01..fadc0580 100644 --- a/test/transform/resource/after-delombok/SuperBuilderNestedGenericTypes.java +++ b/test/transform/resource/after-delombok/SuperBuilderNestedGenericTypes.java @@ -1,41 +1,41 @@ -public class SuperBuilderNestedGenericTypes {
 -	public static abstract class Generic<T extends Generic<?>> {
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class GenericBuilder<T extends Generic<?>, C extends SuperBuilderNestedGenericTypes.Generic<T>, B extends SuperBuilderNestedGenericTypes.Generic.GenericBuilder<T, C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderNestedGenericTypes.Generic.GenericBuilder()";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Generic(final SuperBuilderNestedGenericTypes.Generic.GenericBuilder<T, ?, ?> b) {
 -		}
 -	}
 -	public static abstract class NestedGeneric<T extends OtherGeneric<?>> extends Generic<NestedGeneric<? extends OtherGeneric<?>>> {
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class NestedGenericBuilder<T extends OtherGeneric<?>, C extends SuperBuilderNestedGenericTypes.NestedGeneric<T>, B extends SuperBuilderNestedGenericTypes.NestedGeneric.NestedGenericBuilder<T, C, B>> extends Generic.GenericBuilder<NestedGeneric<? extends OtherGeneric<?>>, C, B> {
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderNestedGenericTypes.NestedGeneric.NestedGenericBuilder(super=" + super.toString() + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected NestedGeneric(final SuperBuilderNestedGenericTypes.NestedGeneric.NestedGenericBuilder<T, ?, ?> b) {
 -			super(b);
 -		}
 -	}
 -	public interface OtherGeneric<T> {
 -	}
 -}
 +public class SuperBuilderNestedGenericTypes { +	public static abstract class Generic<T extends Generic<?>> { +		@java.lang.SuppressWarnings("all") +		public static abstract class GenericBuilder<T extends Generic<?>, C extends SuperBuilderNestedGenericTypes.Generic<T>, B extends SuperBuilderNestedGenericTypes.Generic.GenericBuilder<T, C, B>> { +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderNestedGenericTypes.Generic.GenericBuilder()"; +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Generic(final SuperBuilderNestedGenericTypes.Generic.GenericBuilder<T, ?, ?> b) { +		} +	} +	public static abstract class NestedGeneric<T extends OtherGeneric<?>> extends Generic<NestedGeneric<? extends OtherGeneric<?>>> { +		@java.lang.SuppressWarnings("all") +		public static abstract class NestedGenericBuilder<T extends OtherGeneric<?>, C extends SuperBuilderNestedGenericTypes.NestedGeneric<T>, B extends SuperBuilderNestedGenericTypes.NestedGeneric.NestedGenericBuilder<T, C, B>> extends Generic.GenericBuilder<NestedGeneric<? extends OtherGeneric<?>>, C, B> { +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderNestedGenericTypes.NestedGeneric.NestedGenericBuilder(super=" + super.toString() + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		protected NestedGeneric(final SuperBuilderNestedGenericTypes.NestedGeneric.NestedGenericBuilder<T, ?, ?> b) { +			super(b); +		} +	} +	public interface OtherGeneric<T> { +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderSingularAnnotatedTypes.java b/test/transform/resource/after-delombok/SuperBuilderSingularAnnotatedTypes.java index f6e0f024..ad51816a 100644 --- a/test/transform/resource/after-delombok/SuperBuilderSingularAnnotatedTypes.java +++ b/test/transform/resource/after-delombok/SuperBuilderSingularAnnotatedTypes.java @@ -1,3 +1,4 @@ +//version 8:  import java.lang.annotation.ElementType;  import java.lang.annotation.Target;  import java.util.Set; diff --git a/test/transform/resource/after-delombok/SuperBuilderSingularCustomized.java b/test/transform/resource/after-delombok/SuperBuilderSingularCustomized.java new file mode 100644 index 00000000..04cfd9f2 --- /dev/null +++ b/test/transform/resource/after-delombok/SuperBuilderSingularCustomized.java @@ -0,0 +1,77 @@ +import java.util.Set; +class SuperBuilderSingularCustomized { +	private Set<String> foos; +	public static abstract class SuperBuilderSingularCustomizedBuilder<C extends SuperBuilderSingularCustomized, B extends SuperBuilderSingularCustomized.SuperBuilderSingularCustomizedBuilder<C, B>> { +		@java.lang.SuppressWarnings("all") +		private java.util.ArrayList<String> foos; +		public B custom(final String value) { +			return self(); +		} +		@java.lang.SuppressWarnings("all") +		protected abstract B self(); +		@java.lang.SuppressWarnings("all") +		public abstract C build(); +		@java.lang.SuppressWarnings("all") +		public B foo(final String foo) { +			if (this.foos == null) this.foos = new java.util.ArrayList<String>(); +			this.foos.add(foo); +			return self(); +		} +		@java.lang.SuppressWarnings("all") +		public B foos(final java.util.Collection<? extends String> foos) { +			if (foos == null) { +				throw new java.lang.NullPointerException("foos cannot be null"); +			} +			if (this.foos == null) this.foos = new java.util.ArrayList<String>(); +			this.foos.addAll(foos); +			return self(); +		} +		@java.lang.SuppressWarnings("all") +		public B clearFoos() { +			if (this.foos != null) this.foos.clear(); +			return self(); +		} +		@java.lang.Override +		@java.lang.SuppressWarnings("all") +		public java.lang.String toString() { +			return "SuperBuilderSingularCustomized.SuperBuilderSingularCustomizedBuilder(foos=" + this.foos + ")"; +		} +	} +	@java.lang.SuppressWarnings("all") +	private static final class SuperBuilderSingularCustomizedBuilderImpl extends SuperBuilderSingularCustomized.SuperBuilderSingularCustomizedBuilder<SuperBuilderSingularCustomized, SuperBuilderSingularCustomized.SuperBuilderSingularCustomizedBuilderImpl> { +		@java.lang.SuppressWarnings("all") +		private SuperBuilderSingularCustomizedBuilderImpl() { +		} +		@java.lang.Override +		@java.lang.SuppressWarnings("all") +		protected SuperBuilderSingularCustomized.SuperBuilderSingularCustomizedBuilderImpl self() { +			return this; +		} +		@java.lang.Override +		@java.lang.SuppressWarnings("all") +		public SuperBuilderSingularCustomized build() { +			return new SuperBuilderSingularCustomized(this); +		} +	} +	@java.lang.SuppressWarnings("all") +	protected SuperBuilderSingularCustomized(final SuperBuilderSingularCustomized.SuperBuilderSingularCustomizedBuilder<?, ?> b) { +		java.util.Set<String> foos; +		switch (b.foos == null ? 0 : b.foos.size()) { +		case 0:  +			foos = java.util.Collections.emptySet(); +			break; +		case 1:  +			foos = java.util.Collections.singleton(b.foos.get(0)); +			break; +		default:  +			foos = new java.util.LinkedHashSet<String>(b.foos.size() < 1073741824 ? 1 + b.foos.size() + (b.foos.size() - 3) / 3 : java.lang.Integer.MAX_VALUE); +			foos.addAll(b.foos); +			foos = java.util.Collections.unmodifiableSet(foos); +		} +		this.foos = foos; +	} +	@java.lang.SuppressWarnings("all") +	public static SuperBuilderSingularCustomized.SuperBuilderSingularCustomizedBuilder<?, ?> builder() { +		return new SuperBuilderSingularCustomized.SuperBuilderSingularCustomizedBuilderImpl(); +	} +}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/SuperBuilderWithCustomBuilderMethod.java b/test/transform/resource/after-delombok/SuperBuilderWithCustomBuilderMethod.java index cfa39295..9237a148 100644 --- a/test/transform/resource/after-delombok/SuperBuilderWithCustomBuilderMethod.java +++ b/test/transform/resource/after-delombok/SuperBuilderWithCustomBuilderMethod.java @@ -1,135 +1,142 @@ -import java.util.List;
 -public class SuperBuilderWithCustomBuilderMethod {
 -	public static class Parent<A> {
 -		A field1;
 -		List<String> items;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<A, C extends SuperBuilderWithCustomBuilderMethod.Parent<A>, B extends SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilder<A, C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private A field1;
 -			@java.lang.SuppressWarnings("all")
 -			private java.util.ArrayList<String> items;
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B field1(final A field1) {
 -				this.field1 = field1;
 -				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);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B items(final java.util.Collection<? extends String> items) {
 -				if (items == null) {
 -					throw new java.lang.NullPointerException("items cannot be null");
 -				}
 -				if (this.items == null) this.items = new java.util.ArrayList<String>();
 -				this.items.addAll(items);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B clearItems() {
 -				if (this.items != null) this.items.clear();
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl<A> extends SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilder<A, SuperBuilderWithCustomBuilderMethod.Parent<A>, SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilderImpl<A>> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilderImpl<A> self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithCustomBuilderMethod.Parent<A> build() {
 -				return new SuperBuilderWithCustomBuilderMethod.Parent<A>(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilder<A, ?, ?> b) {
 -			this.field1 = b.field1;
 -			java.util.List<String> items;
 -			switch (b.items == null ? 0 : b.items.size()) {
 -			case 0: 
 -				items = java.util.Collections.emptyList();
 -				break;
 -			case 1: 
 -				items = java.util.Collections.singletonList(b.items.get(0));
 -				break;
 -			default: 
 -				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
 -			}
 -			this.items = items;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static <A> SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilder<A, ?, ?> builder() {
 -			return new SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilderImpl<A>();
 -		}
 -	}
 -	public static class Child<A> extends Parent<A> {
 -		double field3;
 -		public static <A> ChildBuilder<A, ?, ?> builder() {
 -			return new ChildBuilderImpl<A>().item("default item");
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<A, C extends SuperBuilderWithCustomBuilderMethod.Child<A>, B extends SuperBuilderWithCustomBuilderMethod.Child.ChildBuilder<A, C, B>> extends Parent.ParentBuilder<A, C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private double field3;
 -			@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 field3(final double field3) {
 -				this.field3 = field3;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithCustomBuilderMethod.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ChildBuilderImpl<A> extends SuperBuilderWithCustomBuilderMethod.Child.ChildBuilder<A, SuperBuilderWithCustomBuilderMethod.Child<A>, SuperBuilderWithCustomBuilderMethod.Child.ChildBuilderImpl<A>> {
 -			@java.lang.SuppressWarnings("all")
 -			private ChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithCustomBuilderMethod.Child.ChildBuilderImpl<A> self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithCustomBuilderMethod.Child<A> build() {
 -				return new SuperBuilderWithCustomBuilderMethod.Child<A>(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderWithCustomBuilderMethod.Child.ChildBuilder<A, ?, ?> b) {
 -			super(b);
 -			this.field3 = b.field3;
 -		}
 -	}
 -	public static void test() {
 -		Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item("").build();
 -	}
 -}
 +//version 8: Javac 6 will error out due to `ChildBuilder` not existing before properly running lombok. Giving j6 support status, not worth fixing. +import java.util.List; +public class SuperBuilderWithCustomBuilderMethod { +	public static class Parent<A> { +		A field1; +		List<String> items; +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<A, C extends SuperBuilderWithCustomBuilderMethod.Parent<A>, B extends SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilder<A, C, B>> { +			@java.lang.SuppressWarnings("all") +			private A field1; +			@java.lang.SuppressWarnings("all") +			private java.util.ArrayList<String> items; +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B field1(final A field1) { +				this.field1 = field1; +				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); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B items(final java.util.Collection<? extends String> items) { +				if (items == null) { +					throw new java.lang.NullPointerException("items cannot be null"); +				} +				if (this.items == null) this.items = new java.util.ArrayList<String>(); +				this.items.addAll(items); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B clearItems() { +				if (this.items != null) this.items.clear(); +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl<A> extends SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilder<A, SuperBuilderWithCustomBuilderMethod.Parent<A>, SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilderImpl<A>> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilderImpl<A> self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithCustomBuilderMethod.Parent<A> build() { +				return new SuperBuilderWithCustomBuilderMethod.Parent<A>(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilder<A, ?, ?> b) { +			this.field1 = b.field1; +			java.util.List<String> items; +			switch (b.items == null ? 0 : b.items.size()) { +			case 0:  +				items = java.util.Collections.emptyList(); +				break; +			case 1:  +				items = java.util.Collections.singletonList(b.items.get(0)); +				break; +			default:  +				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items)); +			} +			this.items = items; +		} +		@java.lang.SuppressWarnings("all") +		public static <A> SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilder<A, ?, ?> builder() { +			return new SuperBuilderWithCustomBuilderMethod.Parent.ParentBuilderImpl<A>(); +		} +	} +	public static class Child<A> extends Parent<A> { +		double field3; +		public static <A> ChildBuilder<A, ?, ?> builder() { +			return new ChildBuilderImpl<A>().item("default item"); +		} +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<A, C extends SuperBuilderWithCustomBuilderMethod.Child<A>, B extends SuperBuilderWithCustomBuilderMethod.Child.ChildBuilder<A, C, B>> extends Parent.ParentBuilder<A, C, B> { +			@java.lang.SuppressWarnings("all") +			private double 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 "SuperBuilderWithCustomBuilderMethod.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ChildBuilderImpl<A> extends SuperBuilderWithCustomBuilderMethod.Child.ChildBuilder<A, SuperBuilderWithCustomBuilderMethod.Child<A>, SuperBuilderWithCustomBuilderMethod.Child.ChildBuilderImpl<A>> { +			@java.lang.SuppressWarnings("all") +			private ChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithCustomBuilderMethod.Child.ChildBuilderImpl<A> self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithCustomBuilderMethod.Child<A> build() { +				return new SuperBuilderWithCustomBuilderMethod.Child<A>(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderWithCustomBuilderMethod.Child.ChildBuilder<A, ?, ?> b) { +			super(b); +			this.field3 = b.field3; +		} +	} +	public static void test() { +		Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item("").build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderWithDefaults.java b/test/transform/resource/after-delombok/SuperBuilderWithDefaults.java index ad56cea2..a9d92ff9 100644 --- a/test/transform/resource/after-delombok/SuperBuilderWithDefaults.java +++ b/test/transform/resource/after-delombok/SuperBuilderWithDefaults.java @@ -1,134 +1,143 @@ -import java.util.List;
 -public class SuperBuilderWithDefaults {
 -	public static class Parent<N extends Number> {
 -		private long millis;
 -		private N numberField;
 -		@java.lang.SuppressWarnings("all")
 -		private static <N extends Number> long $default$millis() {
 -			return System.currentTimeMillis();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static <N extends Number> N $default$numberField() {
 -			return null;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<N extends Number, C extends SuperBuilderWithDefaults.Parent<N>, B extends SuperBuilderWithDefaults.Parent.ParentBuilder<N, C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private boolean millis$set;
 -			@java.lang.SuppressWarnings("all")
 -			private long millis$value;
 -			@java.lang.SuppressWarnings("all")
 -			private boolean numberField$set;
 -			@java.lang.SuppressWarnings("all")
 -			private N numberField$value;
 -			@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$value = millis;
 -				millis$set = true;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B numberField(final N numberField) {
 -				this.numberField$value = numberField;
 -				numberField$set = true;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithDefaults.Parent.ParentBuilder(millis$value=" + this.millis$value + ", numberField$value=" + this.numberField$value + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl<N extends Number> extends SuperBuilderWithDefaults.Parent.ParentBuilder<N, SuperBuilderWithDefaults.Parent<N>, SuperBuilderWithDefaults.Parent.ParentBuilderImpl<N>> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithDefaults.Parent.ParentBuilderImpl<N> self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithDefaults.Parent<N> build() {
 -				return new SuperBuilderWithDefaults.Parent<N>(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderWithDefaults.Parent.ParentBuilder<N, ?, ?> b) {
 -			if (b.millis$set) this.millis = b.millis$value;
 -			 else this.millis = SuperBuilderWithDefaults.Parent.<N>$default$millis();
 -			if (b.numberField$set) this.numberField = b.numberField$value;
 -			 else this.numberField = SuperBuilderWithDefaults.Parent.<N>$default$numberField();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static <N extends Number> SuperBuilderWithDefaults.Parent.ParentBuilder<N, ?, ?> builder() {
 -			return new SuperBuilderWithDefaults.Parent.ParentBuilderImpl<N>();
 -		}
 -	}
 -	public static class Child extends Parent<Integer> {
 -		private double doubleField;
 -		@java.lang.SuppressWarnings("all")
 -		private static double $default$doubleField() {
 -			return Math.PI;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<C extends SuperBuilderWithDefaults.Child, B extends SuperBuilderWithDefaults.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<Integer, C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private boolean doubleField$set;
 -			@java.lang.SuppressWarnings("all")
 -			private double doubleField$value;
 -			@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$value = 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$value=" + this.doubleField$value + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ChildBuilderImpl extends SuperBuilderWithDefaults.Child.ChildBuilder<SuperBuilderWithDefaults.Child, SuperBuilderWithDefaults.Child.ChildBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithDefaults.Child.ChildBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithDefaults.Child build() {
 -				return new SuperBuilderWithDefaults.Child(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderWithDefaults.Child.ChildBuilder<?, ?> b) {
 -			super(b);
 -			if (b.doubleField$set) this.doubleField = b.doubleField$value;
 -			 else this.doubleField = SuperBuilderWithDefaults.Child.$default$doubleField();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderWithDefaults.Child.ChildBuilder<?, ?> builder() {
 -			return new SuperBuilderWithDefaults.Child.ChildBuilderImpl();
 -		}
 -	}
 -	public static void test() {
 -		Child x = Child.builder().doubleField(0.1).numberField(5).millis(1234567890L).build();
 -	}
 -}
 +import java.util.List; +public class SuperBuilderWithDefaults { +	public static class Parent<N extends Number> { +		private long millis; +		private N numberField; +		@java.lang.SuppressWarnings("all") +		private static <N extends Number> long $default$millis() { +			return System.currentTimeMillis(); +		} +		@java.lang.SuppressWarnings("all") +		private static <N extends Number> N $default$numberField() { +			return null; +		} +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<N extends Number, C extends SuperBuilderWithDefaults.Parent<N>, B extends SuperBuilderWithDefaults.Parent.ParentBuilder<N, C, B>> { +			@java.lang.SuppressWarnings("all") +			private boolean millis$set; +			@java.lang.SuppressWarnings("all") +			private long millis$value; +			@java.lang.SuppressWarnings("all") +			private boolean numberField$set; +			@java.lang.SuppressWarnings("all") +			private N numberField$value; +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B millis(final long millis) { +				this.millis$value = millis; +				millis$set = true; +				return self(); +			} +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B numberField(final N numberField) { +				this.numberField$value = numberField; +				numberField$set = true; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderWithDefaults.Parent.ParentBuilder(millis$value=" + this.millis$value + ", numberField$value=" + this.numberField$value + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl<N extends Number> extends SuperBuilderWithDefaults.Parent.ParentBuilder<N, SuperBuilderWithDefaults.Parent<N>, SuperBuilderWithDefaults.Parent.ParentBuilderImpl<N>> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithDefaults.Parent.ParentBuilderImpl<N> self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithDefaults.Parent<N> build() { +				return new SuperBuilderWithDefaults.Parent<N>(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderWithDefaults.Parent.ParentBuilder<N, ?, ?> b) { +			if (b.millis$set) this.millis = b.millis$value; +			 else this.millis = SuperBuilderWithDefaults.Parent.<N>$default$millis(); +			if (b.numberField$set) this.numberField = b.numberField$value; +			 else this.numberField = SuperBuilderWithDefaults.Parent.<N>$default$numberField(); +		} +		@java.lang.SuppressWarnings("all") +		public static <N extends Number> SuperBuilderWithDefaults.Parent.ParentBuilder<N, ?, ?> builder() { +			return new SuperBuilderWithDefaults.Parent.ParentBuilderImpl<N>(); +		} +	} +	public static class Child extends Parent<Integer> { +		private double doubleField; +		@java.lang.SuppressWarnings("all") +		private static double $default$doubleField() { +			return Math.PI; +		} +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<C extends SuperBuilderWithDefaults.Child, B extends SuperBuilderWithDefaults.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<Integer, C, B> { +			@java.lang.SuppressWarnings("all") +			private boolean doubleField$set; +			@java.lang.SuppressWarnings("all") +			private double doubleField$value; +			@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 doubleField(final double doubleField) { +				this.doubleField$value = 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$value=" + this.doubleField$value + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ChildBuilderImpl extends SuperBuilderWithDefaults.Child.ChildBuilder<SuperBuilderWithDefaults.Child, SuperBuilderWithDefaults.Child.ChildBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithDefaults.Child.ChildBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithDefaults.Child build() { +				return new SuperBuilderWithDefaults.Child(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderWithDefaults.Child.ChildBuilder<?, ?> b) { +			super(b); +			if (b.doubleField$set) this.doubleField = b.doubleField$value; +			 else this.doubleField = SuperBuilderWithDefaults.Child.$default$doubleField(); +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderWithDefaults.Child.ChildBuilder<?, ?> builder() { +			return new SuperBuilderWithDefaults.Child.ChildBuilderImpl(); +		} +	} +	public static void test() { +		Child x = Child.builder().doubleField(0.1).numberField(5).millis(1234567890L).build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderWithExistingConstructor.java b/test/transform/resource/after-delombok/SuperBuilderWithExistingConstructor.java new file mode 100644 index 00000000..c6ab1072 --- /dev/null +++ b/test/transform/resource/after-delombok/SuperBuilderWithExistingConstructor.java @@ -0,0 +1,39 @@ +public class SuperBuilderWithExistingConstructor { +	public SuperBuilderWithExistingConstructor() { +	} +	@java.lang.SuppressWarnings("all") +	public static abstract class SuperBuilderWithExistingConstructorBuilder<C extends SuperBuilderWithExistingConstructor, B extends SuperBuilderWithExistingConstructor.SuperBuilderWithExistingConstructorBuilder<C, B>> { +		@java.lang.SuppressWarnings("all") +		protected abstract B self(); +		@java.lang.SuppressWarnings("all") +		public abstract C build(); +		@java.lang.Override +		@java.lang.SuppressWarnings("all") +		public java.lang.String toString() { +			return "SuperBuilderWithExistingConstructor.SuperBuilderWithExistingConstructorBuilder()"; +		} +	} +	@java.lang.SuppressWarnings("all") +	private static final class SuperBuilderWithExistingConstructorBuilderImpl extends SuperBuilderWithExistingConstructor.SuperBuilderWithExistingConstructorBuilder<SuperBuilderWithExistingConstructor, SuperBuilderWithExistingConstructor.SuperBuilderWithExistingConstructorBuilderImpl> { +		@java.lang.SuppressWarnings("all") +		private SuperBuilderWithExistingConstructorBuilderImpl() { +		} +		@java.lang.Override +		@java.lang.SuppressWarnings("all") +		protected SuperBuilderWithExistingConstructor.SuperBuilderWithExistingConstructorBuilderImpl self() { +			return this; +		} +		@java.lang.Override +		@java.lang.SuppressWarnings("all") +		public SuperBuilderWithExistingConstructor build() { +			return new SuperBuilderWithExistingConstructor(this); +		} +	} +	@java.lang.SuppressWarnings("all") +	protected SuperBuilderWithExistingConstructor(final SuperBuilderWithExistingConstructor.SuperBuilderWithExistingConstructorBuilder<?, ?> b) { +	} +	@java.lang.SuppressWarnings("all") +	public static SuperBuilderWithExistingConstructor.SuperBuilderWithExistingConstructorBuilder<?, ?> builder() { +		return new SuperBuilderWithExistingConstructor.SuperBuilderWithExistingConstructorBuilderImpl(); +	} +}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/SuperBuilderWithGenerics.java b/test/transform/resource/after-delombok/SuperBuilderWithGenerics.java index f5627211..017ebf31 100644 --- a/test/transform/resource/after-delombok/SuperBuilderWithGenerics.java +++ b/test/transform/resource/after-delombok/SuperBuilderWithGenerics.java @@ -1,136 +1,142 @@ -import java.util.List;
 -public class SuperBuilderWithGenerics {
 -	public static class Parent<A> {
 -		A field1;
 -		List<String> items;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<A, C extends SuperBuilderWithGenerics.Parent<A>, B extends SuperBuilderWithGenerics.Parent.ParentBuilder<A, C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private A field1;
 -			@java.lang.SuppressWarnings("all")
 -			private java.util.ArrayList<String> items;
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B field1(final A field1) {
 -				this.field1 = field1;
 -				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);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B items(final java.util.Collection<? extends String> items) {
 -				if (items == null) {
 -					throw new java.lang.NullPointerException("items cannot be null");
 -				}
 -				if (this.items == null) this.items = new java.util.ArrayList<String>();
 -				this.items.addAll(items);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B clearItems() {
 -				if (this.items != null) this.items.clear();
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithGenerics.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl<A> extends SuperBuilderWithGenerics.Parent.ParentBuilder<A, SuperBuilderWithGenerics.Parent<A>, SuperBuilderWithGenerics.Parent.ParentBuilderImpl<A>> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithGenerics.Parent.ParentBuilderImpl<A> self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithGenerics.Parent<A> build() {
 -				return new SuperBuilderWithGenerics.Parent<A>(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderWithGenerics.Parent.ParentBuilder<A, ?, ?> b) {
 -			this.field1 = b.field1;
 -			java.util.List<String> items;
 -			switch (b.items == null ? 0 : b.items.size()) {
 -			case 0: 
 -				items = java.util.Collections.emptyList();
 -				break;
 -			case 1: 
 -				items = java.util.Collections.singletonList(b.items.get(0));
 -				break;
 -			default: 
 -				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
 -			}
 -			this.items = items;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static <A> SuperBuilderWithGenerics.Parent.ParentBuilder<A, ?, ?> builder() {
 -			return new SuperBuilderWithGenerics.Parent.ParentBuilderImpl<A>();
 -		}
 -	}
 -	public static class Child<A> extends Parent<A> {
 -		double field3;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<A, C extends SuperBuilderWithGenerics.Child<A>, B extends SuperBuilderWithGenerics.Child.ChildBuilder<A, C, B>> extends Parent.ParentBuilder<A, C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private double field3;
 -			@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 field3(final double field3) {
 -				this.field3 = field3;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithGenerics.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ChildBuilderImpl<A> extends SuperBuilderWithGenerics.Child.ChildBuilder<A, SuperBuilderWithGenerics.Child<A>, SuperBuilderWithGenerics.Child.ChildBuilderImpl<A>> {
 -			@java.lang.SuppressWarnings("all")
 -			private ChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithGenerics.Child.ChildBuilderImpl<A> self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithGenerics.Child<A> build() {
 -				return new SuperBuilderWithGenerics.Child<A>(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderWithGenerics.Child.ChildBuilder<A, ?, ?> b) {
 -			super(b);
 -			this.field3 = b.field3;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static <A> SuperBuilderWithGenerics.Child.ChildBuilder<A, ?, ?> builder() {
 -			return new SuperBuilderWithGenerics.Child.ChildBuilderImpl<A>();
 -		}
 -	}
 -	public static void test() {
 -		Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item("").build();
 -	}
 -}
 +import java.util.List; +public class SuperBuilderWithGenerics { +	public static class Parent<A> { +		A field1; +		List<String> items; +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<A, C extends SuperBuilderWithGenerics.Parent<A>, B extends SuperBuilderWithGenerics.Parent.ParentBuilder<A, C, B>> { +			@java.lang.SuppressWarnings("all") +			private A field1; +			@java.lang.SuppressWarnings("all") +			private java.util.ArrayList<String> items; +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B field1(final A field1) { +				this.field1 = field1; +				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); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B items(final java.util.Collection<? extends String> items) { +				if (items == null) { +					throw new java.lang.NullPointerException("items cannot be null"); +				} +				if (this.items == null) this.items = new java.util.ArrayList<String>(); +				this.items.addAll(items); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B clearItems() { +				if (this.items != null) this.items.clear(); +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderWithGenerics.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl<A> extends SuperBuilderWithGenerics.Parent.ParentBuilder<A, SuperBuilderWithGenerics.Parent<A>, SuperBuilderWithGenerics.Parent.ParentBuilderImpl<A>> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithGenerics.Parent.ParentBuilderImpl<A> self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithGenerics.Parent<A> build() { +				return new SuperBuilderWithGenerics.Parent<A>(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderWithGenerics.Parent.ParentBuilder<A, ?, ?> b) { +			this.field1 = b.field1; +			java.util.List<String> items; +			switch (b.items == null ? 0 : b.items.size()) { +			case 0:  +				items = java.util.Collections.emptyList(); +				break; +			case 1:  +				items = java.util.Collections.singletonList(b.items.get(0)); +				break; +			default:  +				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items)); +			} +			this.items = items; +		} +		@java.lang.SuppressWarnings("all") +		public static <A> SuperBuilderWithGenerics.Parent.ParentBuilder<A, ?, ?> builder() { +			return new SuperBuilderWithGenerics.Parent.ParentBuilderImpl<A>(); +		} +	} +	public static class Child<A> extends Parent<A> { +		double field3; +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<A, C extends SuperBuilderWithGenerics.Child<A>, B extends SuperBuilderWithGenerics.Child.ChildBuilder<A, C, B>> extends Parent.ParentBuilder<A, C, B> { +			@java.lang.SuppressWarnings("all") +			private double 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 "SuperBuilderWithGenerics.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ChildBuilderImpl<A> extends SuperBuilderWithGenerics.Child.ChildBuilder<A, SuperBuilderWithGenerics.Child<A>, SuperBuilderWithGenerics.Child.ChildBuilderImpl<A>> { +			@java.lang.SuppressWarnings("all") +			private ChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithGenerics.Child.ChildBuilderImpl<A> self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithGenerics.Child<A> build() { +				return new SuperBuilderWithGenerics.Child<A>(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderWithGenerics.Child.ChildBuilder<A, ?, ?> b) { +			super(b); +			this.field3 = b.field3; +		} +		@java.lang.SuppressWarnings("all") +		public static <A> SuperBuilderWithGenerics.Child.ChildBuilder<A, ?, ?> builder() { +			return new SuperBuilderWithGenerics.Child.ChildBuilderImpl<A>(); +		} +	} +	public static void test() { +		Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item("").build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderWithGenerics2.java b/test/transform/resource/after-delombok/SuperBuilderWithGenerics2.java index 2b4697d5..8c465b0e 100644 --- a/test/transform/resource/after-delombok/SuperBuilderWithGenerics2.java +++ b/test/transform/resource/after-delombok/SuperBuilderWithGenerics2.java @@ -1,136 +1,142 @@ -import java.util.List;
 -public class SuperBuilderWithGenerics2 {
 -	public static class Parent<A> {
 -		A field1;
 -		List<String> items;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<A, C extends SuperBuilderWithGenerics2.Parent<A>, B extends SuperBuilderWithGenerics2.Parent.ParentBuilder<A, C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private A field1;
 -			@java.lang.SuppressWarnings("all")
 -			private java.util.ArrayList<String> items;
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B field1(final A field1) {
 -				this.field1 = field1;
 -				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);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B items(final java.util.Collection<? extends String> items) {
 -				if (items == null) {
 -					throw new java.lang.NullPointerException("items cannot be null");
 -				}
 -				if (this.items == null) this.items = new java.util.ArrayList<String>();
 -				this.items.addAll(items);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B clearItems() {
 -				if (this.items != null) this.items.clear();
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithGenerics2.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl<A> extends SuperBuilderWithGenerics2.Parent.ParentBuilder<A, SuperBuilderWithGenerics2.Parent<A>, SuperBuilderWithGenerics2.Parent.ParentBuilderImpl<A>> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithGenerics2.Parent.ParentBuilderImpl<A> self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithGenerics2.Parent<A> build() {
 -				return new SuperBuilderWithGenerics2.Parent<A>(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderWithGenerics2.Parent.ParentBuilder<A, ?, ?> b) {
 -			this.field1 = b.field1;
 -			java.util.List<String> items;
 -			switch (b.items == null ? 0 : b.items.size()) {
 -			case 0: 
 -				items = java.util.Collections.emptyList();
 -				break;
 -			case 1: 
 -				items = java.util.Collections.singletonList(b.items.get(0));
 -				break;
 -			default: 
 -				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
 -			}
 -			this.items = items;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static <A> SuperBuilderWithGenerics2.Parent.ParentBuilder<A, ?, ?> builder() {
 -			return new SuperBuilderWithGenerics2.Parent.ParentBuilderImpl<A>();
 -		}
 -	}
 -	public static class Child<A> extends Parent<String> {
 -		A field3;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<A, C extends SuperBuilderWithGenerics2.Child<A>, B extends SuperBuilderWithGenerics2.Child.ChildBuilder<A, C, B>> extends Parent.ParentBuilder<String, C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private A field3;
 -			@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 field3(final A field3) {
 -				this.field3 = field3;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithGenerics2.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ChildBuilderImpl<A> extends SuperBuilderWithGenerics2.Child.ChildBuilder<A, SuperBuilderWithGenerics2.Child<A>, SuperBuilderWithGenerics2.Child.ChildBuilderImpl<A>> {
 -			@java.lang.SuppressWarnings("all")
 -			private ChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithGenerics2.Child.ChildBuilderImpl<A> self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithGenerics2.Child<A> build() {
 -				return new SuperBuilderWithGenerics2.Child<A>(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderWithGenerics2.Child.ChildBuilder<A, ?, ?> b) {
 -			super(b);
 -			this.field3 = b.field3;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static <A> SuperBuilderWithGenerics2.Child.ChildBuilder<A, ?, ?> builder2() {
 -			return new SuperBuilderWithGenerics2.Child.ChildBuilderImpl<A>();
 -		}
 -	}
 -	public static void test() {
 -		Child<Integer> x = Child.<Integer>builder2().field3(1).field1("value").item("").build();
 -	}
 -}
 +import java.util.List; +public class SuperBuilderWithGenerics2 { +	public static class Parent<A> { +		A field1; +		List<String> items; +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<A, C extends SuperBuilderWithGenerics2.Parent<A>, B extends SuperBuilderWithGenerics2.Parent.ParentBuilder<A, C, B>> { +			@java.lang.SuppressWarnings("all") +			private A field1; +			@java.lang.SuppressWarnings("all") +			private java.util.ArrayList<String> items; +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B field1(final A field1) { +				this.field1 = field1; +				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); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B items(final java.util.Collection<? extends String> items) { +				if (items == null) { +					throw new java.lang.NullPointerException("items cannot be null"); +				} +				if (this.items == null) this.items = new java.util.ArrayList<String>(); +				this.items.addAll(items); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B clearItems() { +				if (this.items != null) this.items.clear(); +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderWithGenerics2.Parent.ParentBuilder(field1=" + this.field1 + ", items=" + this.items + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl<A> extends SuperBuilderWithGenerics2.Parent.ParentBuilder<A, SuperBuilderWithGenerics2.Parent<A>, SuperBuilderWithGenerics2.Parent.ParentBuilderImpl<A>> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithGenerics2.Parent.ParentBuilderImpl<A> self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithGenerics2.Parent<A> build() { +				return new SuperBuilderWithGenerics2.Parent<A>(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderWithGenerics2.Parent.ParentBuilder<A, ?, ?> b) { +			this.field1 = b.field1; +			java.util.List<String> items; +			switch (b.items == null ? 0 : b.items.size()) { +			case 0:  +				items = java.util.Collections.emptyList(); +				break; +			case 1:  +				items = java.util.Collections.singletonList(b.items.get(0)); +				break; +			default:  +				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items)); +			} +			this.items = items; +		} +		@java.lang.SuppressWarnings("all") +		public static <A> SuperBuilderWithGenerics2.Parent.ParentBuilder<A, ?, ?> builder() { +			return new SuperBuilderWithGenerics2.Parent.ParentBuilderImpl<A>(); +		} +	} +	public static class Child<A> extends Parent<String> { +		A field3; +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<A, C extends SuperBuilderWithGenerics2.Child<A>, B extends SuperBuilderWithGenerics2.Child.ChildBuilder<A, C, B>> extends Parent.ParentBuilder<String, C, B> { +			@java.lang.SuppressWarnings("all") +			private A 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 A field3) { +				this.field3 = field3; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderWithGenerics2.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ChildBuilderImpl<A> extends SuperBuilderWithGenerics2.Child.ChildBuilder<A, SuperBuilderWithGenerics2.Child<A>, SuperBuilderWithGenerics2.Child.ChildBuilderImpl<A>> { +			@java.lang.SuppressWarnings("all") +			private ChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithGenerics2.Child.ChildBuilderImpl<A> self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithGenerics2.Child<A> build() { +				return new SuperBuilderWithGenerics2.Child<A>(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderWithGenerics2.Child.ChildBuilder<A, ?, ?> b) { +			super(b); +			this.field3 = b.field3; +		} +		@java.lang.SuppressWarnings("all") +		public static <A> SuperBuilderWithGenerics2.Child.ChildBuilder<A, ?, ?> builder2() { +			return new SuperBuilderWithGenerics2.Child.ChildBuilderImpl<A>(); +		} +	} +	public static void test() { +		Child<Integer> x = Child.<Integer>builder2().field3(1).field1("value").item("").build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderWithGenerics3.java b/test/transform/resource/after-delombok/SuperBuilderWithGenerics3.java index b21f8fee..991d7cbe 100644 --- a/test/transform/resource/after-delombok/SuperBuilderWithGenerics3.java +++ b/test/transform/resource/after-delombok/SuperBuilderWithGenerics3.java @@ -10,6 +10,9 @@ public class SuperBuilderWithGenerics3 {  			protected abstract B self();  			@java.lang.SuppressWarnings("all")  			public abstract C build(); +			/** +			 * @return {@code this}. +			 */  			@java.lang.SuppressWarnings("all")  			public B str(final String str) {  				this.str = str; @@ -60,6 +63,9 @@ public class SuperBuilderWithGenerics3 {  			@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; diff --git a/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java b/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java index 48d51fba..28c48db3 100644 --- a/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java +++ b/test/transform/resource/after-delombok/SuperBuilderWithGenericsAndToBuilder.java @@ -1,182 +1,188 @@ -import java.util.Map;
 -public class SuperBuilderWithGenericsAndToBuilder {
 -	public static class Parent<A> {
 -		A field1;
 -		Map<Integer, String> items;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<A, C extends SuperBuilderWithGenericsAndToBuilder.Parent<A>, B extends SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private A field1;
 -			@java.lang.SuppressWarnings("all")
 -			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) {
 -				SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			private static <A> void $fillValuesFromInstanceIntoBuilder(final SuperBuilderWithGenericsAndToBuilder.Parent<A> instance, final SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, ?, ?> b) {
 -				b.field1(instance.field1);
 -				b.items(instance.items == null ? java.util.Collections.emptyMap() : instance.items);
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B field1(final A field1) {
 -				this.field1 = field1;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			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.Map<? extends Integer, ? extends String> items) {
 -				if (items == null) {
 -					throw new java.lang.NullPointerException("items cannot be null");
 -				}
 -				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$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$key=" + this.items$key + ", items$value=" + this.items$value + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl<A> extends SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, SuperBuilderWithGenericsAndToBuilder.Parent<A>, SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilderImpl<A>> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilderImpl<A> self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithGenericsAndToBuilder.Parent<A> build() {
 -				return new SuperBuilderWithGenericsAndToBuilder.Parent<A>(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, ?, ?> b) {
 -			this.field1 = b.field1;
 -			java.util.Map<Integer, String> items;
 -			switch (b.items$key == null ? 0 : b.items$key.size()) {
 -			case 0: 
 -				items = java.util.Collections.emptyMap();
 -				break;
 -			case 1: 
 -				items = java.util.Collections.singletonMap(b.items$key.get(0), b.items$value.get(0));
 -				break;
 -			default: 
 -				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;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static <A> SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, ?, ?> builder() {
 -			return new SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilderImpl<A>();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, ?, ?> toBuilder() {
 -			return new SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilderImpl<A>().$fillValuesFrom(this);
 -		}
 -	}
 -	public static class Child<A> extends Parent<A> {
 -		double field3;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<A, C extends SuperBuilderWithGenericsAndToBuilder.Child<A>, B extends SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, C, B>> extends Parent.ParentBuilder<A, 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);
 -				SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			private static <A> void $fillValuesFromInstanceIntoBuilder(final SuperBuilderWithGenericsAndToBuilder.Child<A> instance, final SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, ?, ?> 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();
 -			@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 "SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ChildBuilderImpl<A> extends SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, SuperBuilderWithGenericsAndToBuilder.Child<A>, SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilderImpl<A>> {
 -			@java.lang.SuppressWarnings("all")
 -			private ChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilderImpl<A> self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithGenericsAndToBuilder.Child<A> build() {
 -				return new SuperBuilderWithGenericsAndToBuilder.Child<A>(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, ?, ?> b) {
 -			super(b);
 -			this.field3 = b.field3;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static <A> SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, ?, ?> builder() {
 -			return new SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilderImpl<A>();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, ?, ?> toBuilder() {
 -			return new SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilderImpl<A>().$fillValuesFrom(this);
 -		}
 -	}
 -	public static void test() {
 -		Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item(5, "").build().toBuilder().build();
 -	}
 -}
 +import java.util.Map; +public class SuperBuilderWithGenericsAndToBuilder { +	public static class Parent<A> { +		A field1; +		Map<Integer, String> items; +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<A, C extends SuperBuilderWithGenericsAndToBuilder.Parent<A>, B extends SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, C, B>> { +			@java.lang.SuppressWarnings("all") +			private A field1; +			@java.lang.SuppressWarnings("all") +			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) { +				SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			private static <A> void $fillValuesFromInstanceIntoBuilder(final SuperBuilderWithGenericsAndToBuilder.Parent<A> instance, final SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, ?, ?> b) { +				b.field1(instance.field1); +				b.items(instance.items == null ? java.util.Collections.<Integer, String>emptyMap() : instance.items); +			} +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B field1(final A field1) { +				this.field1 = field1; +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			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.Map<? extends Integer, ? extends String> items) { +				if (items == null) { +					throw new java.lang.NullPointerException("items cannot be null"); +				} +				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$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$key=" + this.items$key + ", items$value=" + this.items$value + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl<A> extends SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, SuperBuilderWithGenericsAndToBuilder.Parent<A>, SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilderImpl<A>> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilderImpl<A> self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithGenericsAndToBuilder.Parent<A> build() { +				return new SuperBuilderWithGenericsAndToBuilder.Parent<A>(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, ?, ?> b) { +			this.field1 = b.field1; +			java.util.Map<Integer, String> items; +			switch (b.items$key == null ? 0 : b.items$key.size()) { +			case 0:  +				items = java.util.Collections.emptyMap(); +				break; +			case 1:  +				items = java.util.Collections.singletonMap(b.items$key.get(0), b.items$value.get(0)); +				break; +			default:  +				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; +		} +		@java.lang.SuppressWarnings("all") +		public static <A> SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, ?, ?> builder() { +			return new SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilderImpl<A>(); +		} +		@java.lang.SuppressWarnings("all") +		public SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilder<A, ?, ?> toBuilder() { +			return new SuperBuilderWithGenericsAndToBuilder.Parent.ParentBuilderImpl<A>().$fillValuesFrom(this); +		} +	} +	public static class Child<A> extends Parent<A> { +		double field3; +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<A, C extends SuperBuilderWithGenericsAndToBuilder.Child<A>, B extends SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, C, B>> extends Parent.ParentBuilder<A, 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); +				SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			private static <A> void $fillValuesFromInstanceIntoBuilder(final SuperBuilderWithGenericsAndToBuilder.Child<A> instance, final SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, ?, ?> 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 "SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ChildBuilderImpl<A> extends SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, SuperBuilderWithGenericsAndToBuilder.Child<A>, SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilderImpl<A>> { +			@java.lang.SuppressWarnings("all") +			private ChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilderImpl<A> self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithGenericsAndToBuilder.Child<A> build() { +				return new SuperBuilderWithGenericsAndToBuilder.Child<A>(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, ?, ?> b) { +			super(b); +			this.field3 = b.field3; +		} +		@java.lang.SuppressWarnings("all") +		public static <A> SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, ?, ?> builder() { +			return new SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilderImpl<A>(); +		} +		@java.lang.SuppressWarnings("all") +		public SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilder<A, ?, ?> toBuilder() { +			return new SuperBuilderWithGenericsAndToBuilder.Child.ChildBuilderImpl<A>().$fillValuesFrom(this); +		} +	} +	public static void test() { +		Child<Integer> x = Child.<Integer>builder().field3(0.0).field1(5).item(5, "").build().toBuilder().build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderWithNonNull.java b/test/transform/resource/after-delombok/SuperBuilderWithNonNull.java index 7c9a5a13..a3e15e8d 100644 --- a/test/transform/resource/after-delombok/SuperBuilderWithNonNull.java +++ b/test/transform/resource/after-delombok/SuperBuilderWithNonNull.java @@ -1,123 +1,130 @@ -import java.util.List;
 -public class SuperBuilderWithNonNull {
 -	public static class Parent {
 -		@lombok.NonNull
 -		final String nonNullParentField;
 -		@java.lang.SuppressWarnings("all")
 -		private static String $default$nonNullParentField() {
 -			return "default";
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<C extends SuperBuilderWithNonNull.Parent, B extends SuperBuilderWithNonNull.Parent.ParentBuilder<C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private boolean nonNullParentField$set;
 -			@java.lang.SuppressWarnings("all")
 -			private String nonNullParentField$value;
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B nonNullParentField(@lombok.NonNull final String nonNullParentField) {
 -				if (nonNullParentField == null) {
 -					throw new java.lang.NullPointerException("nonNullParentField is marked non-null but is null");
 -				}
 -				this.nonNullParentField$value = nonNullParentField;
 -				nonNullParentField$set = true;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithNonNull.Parent.ParentBuilder(nonNullParentField$value=" + this.nonNullParentField$value + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl extends SuperBuilderWithNonNull.Parent.ParentBuilder<SuperBuilderWithNonNull.Parent, SuperBuilderWithNonNull.Parent.ParentBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithNonNull.Parent.ParentBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithNonNull.Parent build() {
 -				return new SuperBuilderWithNonNull.Parent(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderWithNonNull.Parent.ParentBuilder<?, ?> b) {
 -			if (b.nonNullParentField$set) this.nonNullParentField = b.nonNullParentField$value;
 -			 else this.nonNullParentField = SuperBuilderWithNonNull.Parent.$default$nonNullParentField();
 -			if (nonNullParentField == null) {
 -				throw new java.lang.NullPointerException("nonNullParentField is marked non-null but is null");
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderWithNonNull.Parent.ParentBuilder<?, ?> builder() {
 -			return new SuperBuilderWithNonNull.Parent.ParentBuilderImpl();
 -		}
 -	}
 -	public static class Child extends Parent {
 -		@lombok.NonNull
 -		String nonNullChildField;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<C extends SuperBuilderWithNonNull.Child, B extends SuperBuilderWithNonNull.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> {
 -			@java.lang.SuppressWarnings("all")
 -			private String nonNullChildField;
 -			@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 nonNullChildField(@lombok.NonNull final String nonNullChildField) {
 -				if (nonNullChildField == null) {
 -					throw new java.lang.NullPointerException("nonNullChildField is marked non-null but is null");
 -				}
 -				this.nonNullChildField = nonNullChildField;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithNonNull.Child.ChildBuilder(super=" + super.toString() + ", nonNullChildField=" + this.nonNullChildField + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ChildBuilderImpl extends SuperBuilderWithNonNull.Child.ChildBuilder<SuperBuilderWithNonNull.Child, SuperBuilderWithNonNull.Child.ChildBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithNonNull.Child.ChildBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithNonNull.Child build() {
 -				return new SuperBuilderWithNonNull.Child(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderWithNonNull.Child.ChildBuilder<?, ?> b) {
 -			super(b);
 -			this.nonNullChildField = b.nonNullChildField;
 -			if (nonNullChildField == null) {
 -				throw new java.lang.NullPointerException("nonNullChildField is marked non-null but is null");
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderWithNonNull.Child.ChildBuilder<?, ?> builder() {
 -			return new SuperBuilderWithNonNull.Child.ChildBuilderImpl();
 -		}
 -	}
 -	public static void test() {
 -		Child x = Child.builder().nonNullChildField("child").nonNullParentField("parent").build();
 -	}
 -}
 +//version 8: +import java.util.List; +public class SuperBuilderWithNonNull { +	public static class Parent { +		@lombok.NonNull +		final String nonNullParentField; +		@java.lang.SuppressWarnings("all") +		private static String $default$nonNullParentField() { +			return "default"; +		} +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<C extends SuperBuilderWithNonNull.Parent, B extends SuperBuilderWithNonNull.Parent.ParentBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private boolean nonNullParentField$set; +			@java.lang.SuppressWarnings("all") +			private String nonNullParentField$value; +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B nonNullParentField(@lombok.NonNull final String nonNullParentField) { +				if (nonNullParentField == null) { +					throw new java.lang.NullPointerException("nonNullParentField is marked non-null but is null"); +				} +				this.nonNullParentField$value = nonNullParentField; +				nonNullParentField$set = true; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderWithNonNull.Parent.ParentBuilder(nonNullParentField$value=" + this.nonNullParentField$value + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl extends SuperBuilderWithNonNull.Parent.ParentBuilder<SuperBuilderWithNonNull.Parent, SuperBuilderWithNonNull.Parent.ParentBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithNonNull.Parent.ParentBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithNonNull.Parent build() { +				return new SuperBuilderWithNonNull.Parent(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderWithNonNull.Parent.ParentBuilder<?, ?> b) { +			if (b.nonNullParentField$set) this.nonNullParentField = b.nonNullParentField$value; +			 else this.nonNullParentField = SuperBuilderWithNonNull.Parent.$default$nonNullParentField(); +			if (nonNullParentField == null) { +				throw new java.lang.NullPointerException("nonNullParentField is marked non-null but is null"); +			} +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderWithNonNull.Parent.ParentBuilder<?, ?> builder() { +			return new SuperBuilderWithNonNull.Parent.ParentBuilderImpl(); +		} +	} +	public static class Child extends Parent { +		@lombok.NonNull +		String nonNullChildField; +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<C extends SuperBuilderWithNonNull.Child, B extends SuperBuilderWithNonNull.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> { +			@java.lang.SuppressWarnings("all") +			private String nonNullChildField; +			@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 nonNullChildField(@lombok.NonNull final String nonNullChildField) { +				if (nonNullChildField == null) { +					throw new java.lang.NullPointerException("nonNullChildField is marked non-null but is null"); +				} +				this.nonNullChildField = nonNullChildField; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderWithNonNull.Child.ChildBuilder(super=" + super.toString() + ", nonNullChildField=" + this.nonNullChildField + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ChildBuilderImpl extends SuperBuilderWithNonNull.Child.ChildBuilder<SuperBuilderWithNonNull.Child, SuperBuilderWithNonNull.Child.ChildBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithNonNull.Child.ChildBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithNonNull.Child build() { +				return new SuperBuilderWithNonNull.Child(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderWithNonNull.Child.ChildBuilder<?, ?> b) { +			super(b); +			this.nonNullChildField = b.nonNullChildField; +			if (nonNullChildField == null) { +				throw new java.lang.NullPointerException("nonNullChildField is marked non-null but is null"); +			} +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderWithNonNull.Child.ChildBuilder<?, ?> builder() { +			return new SuperBuilderWithNonNull.Child.ChildBuilderImpl(); +		} +	} +	public static void test() { +		Child x = Child.builder().nonNullChildField("child").nonNullParentField("parent").build(); +	} +} diff --git a/test/transform/resource/after-delombok/SuperBuilderWithPrefixes.java b/test/transform/resource/after-delombok/SuperBuilderWithPrefixes.java index 9662c4d9..16325113 100644 --- a/test/transform/resource/after-delombok/SuperBuilderWithPrefixes.java +++ b/test/transform/resource/after-delombok/SuperBuilderWithPrefixes.java @@ -14,11 +14,17 @@ class SuperBuilderWithPrefixes {  		protected abstract B self();  		@java.lang.SuppressWarnings("all")  		public abstract C build(); +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public B field(final int field) {  			this.field = field;  			return self();  		} +		/** +		 * @return {@code this}. +		 */  		@java.lang.SuppressWarnings("all")  		public B otherField(final int otherField) {  			this.otherField = otherField; diff --git a/test/transform/resource/after-delombok/SuperBuilderWithSetterPrefix.java b/test/transform/resource/after-delombok/SuperBuilderWithSetterPrefix.java index 28395fcd..88db8511 100644 --- a/test/transform/resource/after-delombok/SuperBuilderWithSetterPrefix.java +++ b/test/transform/resource/after-delombok/SuperBuilderWithSetterPrefix.java @@ -1,201 +1,216 @@ -import java.util.List;
 -public class SuperBuilderWithSetterPrefix {
 -	public static class Parent {
 -		private int field1;
 -		int obtainViaField;
 -		int obtainViaMethod;
 -		String obtainViaStaticMethod;
 -		List<String> items;
 -		private int method() {
 -			return 2;
 -		}
 -		private static String staticMethod(Parent instance) {
 -			return "staticMethod";
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ParentBuilder<C extends SuperBuilderWithSetterPrefix.Parent, B extends SuperBuilderWithSetterPrefix.Parent.ParentBuilder<C, B>> {
 -			@java.lang.SuppressWarnings("all")
 -			private int field1;
 -			@java.lang.SuppressWarnings("all")
 -			private int obtainViaField;
 -			@java.lang.SuppressWarnings("all")
 -			private int obtainViaMethod;
 -			@java.lang.SuppressWarnings("all")
 -			private String obtainViaStaticMethod;
 -			@java.lang.SuppressWarnings("all")
 -			private java.util.ArrayList<String> items;
 -			@java.lang.SuppressWarnings("all")
 -			protected B $fillValuesFrom(final C instance) {
 -				SuperBuilderWithSetterPrefix.Parent.ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderWithSetterPrefix.Parent instance, final SuperBuilderWithSetterPrefix.Parent.ParentBuilder<?, ?> b) {
 -				b.withField1(instance.field1);
 -				b.withObtainViaField(instance.field1);
 -				b.withObtainViaMethod(instance.method());
 -				b.withObtainViaStaticMethod(SuperBuilderWithSetterPrefix.Parent.staticMethod(instance));
 -				b.withItems(instance.items == null ? java.util.Collections.emptyList() : instance.items);
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			protected abstract B self();
 -			@java.lang.SuppressWarnings("all")
 -			public abstract C build();
 -			@java.lang.SuppressWarnings("all")
 -			public B withField1(final int field1) {
 -				this.field1 = field1;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B withObtainViaField(final int obtainViaField) {
 -				this.obtainViaField = obtainViaField;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B withObtainViaMethod(final int obtainViaMethod) {
 -				this.obtainViaMethod = obtainViaMethod;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B withObtainViaStaticMethod(final String obtainViaStaticMethod) {
 -				this.obtainViaStaticMethod = obtainViaStaticMethod;
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B withItem(final String item) {
 -				if (this.items == null) this.items = new java.util.ArrayList<String>();
 -				this.items.add(item);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B withItems(final java.util.Collection<? extends String> items) {
 -				if (items == null) {
 -					throw new java.lang.NullPointerException("items cannot be null");
 -				}
 -				if (this.items == null) this.items = new java.util.ArrayList<String>();
 -				this.items.addAll(items);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			public B clearItems() {
 -				if (this.items != null) this.items.clear();
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithSetterPrefix.Parent.ParentBuilder(field1=" + this.field1 + ", obtainViaField=" + this.obtainViaField + ", obtainViaMethod=" + this.obtainViaMethod + ", obtainViaStaticMethod=" + this.obtainViaStaticMethod + ", items=" + this.items + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ParentBuilderImpl extends SuperBuilderWithSetterPrefix.Parent.ParentBuilder<SuperBuilderWithSetterPrefix.Parent, SuperBuilderWithSetterPrefix.Parent.ParentBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ParentBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithSetterPrefix.Parent.ParentBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithSetterPrefix.Parent build() {
 -				return new SuperBuilderWithSetterPrefix.Parent(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Parent(final SuperBuilderWithSetterPrefix.Parent.ParentBuilder<?, ?> b) {
 -			this.field1 = b.field1;
 -			this.obtainViaField = b.obtainViaField;
 -			this.obtainViaMethod = b.obtainViaMethod;
 -			this.obtainViaStaticMethod = b.obtainViaStaticMethod;
 -			java.util.List<String> items;
 -			switch (b.items == null ? 0 : b.items.size()) {
 -			case 0: 
 -				items = java.util.Collections.emptyList();
 -				break;
 -			case 1: 
 -				items = java.util.Collections.singletonList(b.items.get(0));
 -				break;
 -			default: 
 -				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items));
 -			}
 -			this.items = items;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderWithSetterPrefix.Parent.ParentBuilder<?, ?> builder() {
 -			return new SuperBuilderWithSetterPrefix.Parent.ParentBuilderImpl();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public SuperBuilderWithSetterPrefix.Parent.ParentBuilder<?, ?> toBuilder() {
 -			return new SuperBuilderWithSetterPrefix.Parent.ParentBuilderImpl().$fillValuesFrom(this);
 -		}
 -	}
 -	public static class Child extends Parent {
 -		private double field3;
 -		@java.lang.SuppressWarnings("all")
 -		public static abstract class ChildBuilder<C extends SuperBuilderWithSetterPrefix.Child, B extends SuperBuilderWithSetterPrefix.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<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);
 -				SuperBuilderWithSetterPrefix.Child.ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
 -				return self();
 -			}
 -			@java.lang.SuppressWarnings("all")
 -			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderWithSetterPrefix.Child instance, final SuperBuilderWithSetterPrefix.Child.ChildBuilder<?, ?> b) {
 -				b.setField3(instance.field3);
 -			}
 -			@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 setField3(final double field3) {
 -				this.field3 = field3;
 -				return self();
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public java.lang.String toString() {
 -				return "SuperBuilderWithSetterPrefix.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")";
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		private static final class ChildBuilderImpl extends SuperBuilderWithSetterPrefix.Child.ChildBuilder<SuperBuilderWithSetterPrefix.Child, SuperBuilderWithSetterPrefix.Child.ChildBuilderImpl> {
 -			@java.lang.SuppressWarnings("all")
 -			private ChildBuilderImpl() {
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			protected SuperBuilderWithSetterPrefix.Child.ChildBuilderImpl self() {
 -				return this;
 -			}
 -			@java.lang.Override
 -			@java.lang.SuppressWarnings("all")
 -			public SuperBuilderWithSetterPrefix.Child build() {
 -				return new SuperBuilderWithSetterPrefix.Child(this);
 -			}
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		protected Child(final SuperBuilderWithSetterPrefix.Child.ChildBuilder<?, ?> b) {
 -			super(b);
 -			this.field3 = b.field3;
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public static SuperBuilderWithSetterPrefix.Child.ChildBuilder<?, ?> builder() {
 -			return new SuperBuilderWithSetterPrefix.Child.ChildBuilderImpl();
 -		}
 -		@java.lang.SuppressWarnings("all")
 -		public SuperBuilderWithSetterPrefix.Child.ChildBuilder<?, ?> toBuilder() {
 -			return new SuperBuilderWithSetterPrefix.Child.ChildBuilderImpl().$fillValuesFrom(this);
 -		}
 -	}
 -	public static void test() {
 -		Child x = Child.builder().setField3(0.0).withField1(5).withItem("").build().toBuilder().build();
 -	}
 -}
 +import java.util.List; +public class SuperBuilderWithSetterPrefix { +	public static class Parent { +		private int field1; +		int obtainViaField; +		int obtainViaMethod; +		String obtainViaStaticMethod; +		List<String> items; +		private int method() { +			return 2; +		} +		private static String staticMethod(Parent instance) { +			return "staticMethod"; +		} +		@java.lang.SuppressWarnings("all") +		public static abstract class ParentBuilder<C extends SuperBuilderWithSetterPrefix.Parent, B extends SuperBuilderWithSetterPrefix.Parent.ParentBuilder<C, B>> { +			@java.lang.SuppressWarnings("all") +			private int field1; +			@java.lang.SuppressWarnings("all") +			private int obtainViaField; +			@java.lang.SuppressWarnings("all") +			private int obtainViaMethod; +			@java.lang.SuppressWarnings("all") +			private String obtainViaStaticMethod; +			@java.lang.SuppressWarnings("all") +			private java.util.ArrayList<String> items; +			@java.lang.SuppressWarnings("all") +			protected B $fillValuesFrom(final C instance) { +				SuperBuilderWithSetterPrefix.Parent.ParentBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderWithSetterPrefix.Parent instance, final SuperBuilderWithSetterPrefix.Parent.ParentBuilder<?, ?> b) { +				b.withField1(instance.field1); +				b.withObtainViaField(instance.field1); +				b.withObtainViaMethod(instance.method()); +				b.withObtainViaStaticMethod(SuperBuilderWithSetterPrefix.Parent.staticMethod(instance)); +				b.withItems(instance.items == null ? java.util.Collections.<String>emptyList() : instance.items); +			} +			@java.lang.SuppressWarnings("all") +			protected abstract B self(); +			@java.lang.SuppressWarnings("all") +			public abstract C build(); +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B withField1(final int field1) { +				this.field1 = field1; +				return self(); +			} +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B withObtainViaField(final int obtainViaField) { +				this.obtainViaField = obtainViaField; +				return self(); +			} +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B withObtainViaMethod(final int obtainViaMethod) { +				this.obtainViaMethod = obtainViaMethod; +				return self(); +			} +			/** +			 * @return {@code this}. +			 */ +			@java.lang.SuppressWarnings("all") +			public B withObtainViaStaticMethod(final String obtainViaStaticMethod) { +				this.obtainViaStaticMethod = obtainViaStaticMethod; +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B withItem(final String item) { +				if (this.items == null) this.items = new java.util.ArrayList<String>(); +				this.items.add(item); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B withItems(final java.util.Collection<? extends String> items) { +				if (items == null) { +					throw new java.lang.NullPointerException("items cannot be null"); +				} +				if (this.items == null) this.items = new java.util.ArrayList<String>(); +				this.items.addAll(items); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			public B clearItems() { +				if (this.items != null) this.items.clear(); +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderWithSetterPrefix.Parent.ParentBuilder(field1=" + this.field1 + ", obtainViaField=" + this.obtainViaField + ", obtainViaMethod=" + this.obtainViaMethod + ", obtainViaStaticMethod=" + this.obtainViaStaticMethod + ", items=" + this.items + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ParentBuilderImpl extends SuperBuilderWithSetterPrefix.Parent.ParentBuilder<SuperBuilderWithSetterPrefix.Parent, SuperBuilderWithSetterPrefix.Parent.ParentBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ParentBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithSetterPrefix.Parent.ParentBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithSetterPrefix.Parent build() { +				return new SuperBuilderWithSetterPrefix.Parent(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Parent(final SuperBuilderWithSetterPrefix.Parent.ParentBuilder<?, ?> b) { +			this.field1 = b.field1; +			this.obtainViaField = b.obtainViaField; +			this.obtainViaMethod = b.obtainViaMethod; +			this.obtainViaStaticMethod = b.obtainViaStaticMethod; +			java.util.List<String> items; +			switch (b.items == null ? 0 : b.items.size()) { +			case 0:  +				items = java.util.Collections.emptyList(); +				break; +			case 1:  +				items = java.util.Collections.singletonList(b.items.get(0)); +				break; +			default:  +				items = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(b.items)); +			} +			this.items = items; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderWithSetterPrefix.Parent.ParentBuilder<?, ?> builder() { +			return new SuperBuilderWithSetterPrefix.Parent.ParentBuilderImpl(); +		} +		@java.lang.SuppressWarnings("all") +		public SuperBuilderWithSetterPrefix.Parent.ParentBuilder<?, ?> toBuilder() { +			return new SuperBuilderWithSetterPrefix.Parent.ParentBuilderImpl().$fillValuesFrom(this); +		} +	} +	public static class Child extends Parent { +		private double field3; +		@java.lang.SuppressWarnings("all") +		public static abstract class ChildBuilder<C extends SuperBuilderWithSetterPrefix.Child, B extends SuperBuilderWithSetterPrefix.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<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); +				SuperBuilderWithSetterPrefix.Child.ChildBuilder.$fillValuesFromInstanceIntoBuilder(instance, this); +				return self(); +			} +			@java.lang.SuppressWarnings("all") +			private static void $fillValuesFromInstanceIntoBuilder(final SuperBuilderWithSetterPrefix.Child instance, final SuperBuilderWithSetterPrefix.Child.ChildBuilder<?, ?> b) { +				b.setField3(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 setField3(final double field3) { +				this.field3 = field3; +				return self(); +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public java.lang.String toString() { +				return "SuperBuilderWithSetterPrefix.Child.ChildBuilder(super=" + super.toString() + ", field3=" + this.field3 + ")"; +			} +		} +		@java.lang.SuppressWarnings("all") +		private static final class ChildBuilderImpl extends SuperBuilderWithSetterPrefix.Child.ChildBuilder<SuperBuilderWithSetterPrefix.Child, SuperBuilderWithSetterPrefix.Child.ChildBuilderImpl> { +			@java.lang.SuppressWarnings("all") +			private ChildBuilderImpl() { +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			protected SuperBuilderWithSetterPrefix.Child.ChildBuilderImpl self() { +				return this; +			} +			@java.lang.Override +			@java.lang.SuppressWarnings("all") +			public SuperBuilderWithSetterPrefix.Child build() { +				return new SuperBuilderWithSetterPrefix.Child(this); +			} +		} +		@java.lang.SuppressWarnings("all") +		protected Child(final SuperBuilderWithSetterPrefix.Child.ChildBuilder<?, ?> b) { +			super(b); +			this.field3 = b.field3; +		} +		@java.lang.SuppressWarnings("all") +		public static SuperBuilderWithSetterPrefix.Child.ChildBuilder<?, ?> builder() { +			return new SuperBuilderWithSetterPrefix.Child.ChildBuilderImpl(); +		} +		@java.lang.SuppressWarnings("all") +		public SuperBuilderWithSetterPrefix.Child.ChildBuilder<?, ?> toBuilder() { +			return new SuperBuilderWithSetterPrefix.Child.ChildBuilderImpl().$fillValuesFrom(this); +		} +	} +	public static void test() { +		Child x = Child.builder().setField3(0.0).withField1(5).withItem("").build().toBuilder().build(); +	} +} diff --git a/test/transform/resource/after-delombok/Tolerate.java b/test/transform/resource/after-delombok/Tolerate.java index c3e3d7fd..2539f091 100644 --- a/test/transform/resource/after-delombok/Tolerate.java +++ b/test/transform/resource/after-delombok/Tolerate.java @@ -1,54 +1,39 @@  import java.util.regex.Pattern; -  class Tolerate { -	  	private Pattern pattern; -	  	@lombok.experimental.Tolerate  	public void setPattern(String pattern) {  		setPattern(Pattern.compile(pattern));  	} -	  	@java.lang.SuppressWarnings("all") -	 -	  	public void setPattern(final Pattern pattern) {  		this.pattern = pattern;  	} -	  	@java.lang.SuppressWarnings("all") -	 -	  	public Pattern getPattern() {  		return this.pattern;  	}  }  class Tolerate2 {  	private final Pattern pattern; -	  	@lombok.experimental.Tolerate  	public Tolerate2 withPattern(String pattern) {  		return withPattern(Pattern.compile(pattern));  	} -	  	public Tolerate2 withPattern(String nameGlob, String extensionGlob) {  		return withPattern(nameGlob.replace("*", ".*") + "\\." + extensionGlob.replace("*", ".*"));  	} -	  	@java.lang.SuppressWarnings("all") -	 -	  	public Pattern getPattern() {  		return this.pattern;  	} -	 +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all") -	 -	  	public Tolerate2 withPattern(final Pattern pattern) {  		return this.pattern == pattern ? this : new Tolerate2(pattern);  	} -	  	@java.lang.SuppressWarnings("all")  	public Tolerate2(final Pattern pattern) {  		this.pattern = pattern; diff --git a/test/transform/resource/after-delombok/TypeUseAnnotations.java b/test/transform/resource/after-delombok/TypeUseAnnotations.java index fbf32577..37c24c53 100644 --- a/test/transform/resource/after-delombok/TypeUseAnnotations.java +++ b/test/transform/resource/after-delombok/TypeUseAnnotations.java @@ -1,3 +1,4 @@ +//version 8:  import java.lang.annotation.ElementType;  import java.lang.annotation.Target;  import java.util.List; diff --git a/test/transform/resource/after-delombok/ValDelegateMethodReference.java b/test/transform/resource/after-delombok/ValDelegateMethodReference.java index 186e2aaa..c62edd66 100644 --- a/test/transform/resource/after-delombok/ValDelegateMethodReference.java +++ b/test/transform/resource/after-delombok/ValDelegateMethodReference.java @@ -1,3 +1,4 @@ +//version 8:  import java.util.function.Function;  public class ValDelegateMethodReference { diff --git a/test/transform/resource/after-delombok/ValWeirdTypes.java b/test/transform/resource/after-delombok/ValWeirdTypes.java index bc18fdac..b3ecfc49 100644 --- a/test/transform/resource/after-delombok/ValWeirdTypes.java +++ b/test/transform/resource/after-delombok/ValWeirdTypes.java @@ -1,3 +1,4 @@ +// version 8: In java6/7, lub types worked differently, so, the `arraysAsList` method has a slightly different inferred type there.  import java.math.BigDecimal;  import java.util.*;  public class ValWeirdTypes<Z> { diff --git a/test/transform/resource/after-delombok/WithAlreadyExists.java b/test/transform/resource/after-delombok/WithAlreadyExists.java index a9cb975d..6997deb9 100644 --- a/test/transform/resource/after-delombok/WithAlreadyExists.java +++ b/test/transform/resource/after-delombok/WithAlreadyExists.java @@ -32,6 +32,9 @@ class With5 {  	}  	With5(String foo) {  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public With5 withFoo(final String foo) {  		return this.foo == foo ? this : new With5(foo); @@ -43,6 +46,9 @@ class With6 {  	}  	With6(String foo) {  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public With6 withFoo(final String foo) {  		return this.foo == foo ? this : new With6(foo); diff --git a/test/transform/resource/after-delombok/WithAndAllArgsConstructor.java b/test/transform/resource/after-delombok/WithAndAllArgsConstructor.java index 131e792c..4a88bb0e 100644 --- a/test/transform/resource/after-delombok/WithAndAllArgsConstructor.java +++ b/test/transform/resource/after-delombok/WithAndAllArgsConstructor.java @@ -11,10 +11,16 @@ class WithAndAllArgsConstructor<T, J extends T, L extends java.lang.Number> {  		this.y = y;  		this.z = z;  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WithAndAllArgsConstructor<T, J, L> withTest(final J test) {  		return this.test == test ? this : new WithAndAllArgsConstructor<T, J, L>(test, this.test2, this.y, this.z);  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WithAndAllArgsConstructor<T, J, L> withTest2(final java.util.List<L> test2) {  		return this.test2 == test2 ? this : new WithAndAllArgsConstructor<T, J, L>(this.test, test2, this.y, this.z); diff --git a/test/transform/resource/after-delombok/WithByNullAnnos.java b/test/transform/resource/after-delombok/WithByNullAnnos.java index cdaed973..04d64f16 100644 --- a/test/transform/resource/after-delombok/WithByNullAnnos.java +++ b/test/transform/resource/after-delombok/WithByNullAnnos.java @@ -1,3 +1,4 @@ +//version 8:  import java.util.List;  public class WithByNullAnnos {  	final List<String> test; diff --git a/test/transform/resource/after-delombok/WithByTypes.java b/test/transform/resource/after-delombok/WithByTypes.java index e5e2fb07..f1f1ef5f 100644 --- a/test/transform/resource/after-delombok/WithByTypes.java +++ b/test/transform/resource/after-delombok/WithByTypes.java @@ -1,3 +1,4 @@ +//version 8:  public class WithByTypes<T> {  	private final int a;  	private final long b; diff --git a/test/transform/resource/after-delombok/WithMethodAbstract.java b/test/transform/resource/after-delombok/WithMethodAbstract.java index 16f6f060..250330f7 100644 --- a/test/transform/resource/after-delombok/WithMethodAbstract.java +++ b/test/transform/resource/after-delombok/WithMethodAbstract.java @@ -1,5 +1,8 @@  abstract class WithMethodAbstract {  	String foo; +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public abstract WithMethodAbstract withFoo(final String foo);  } diff --git a/test/transform/resource/after-delombok/WithMethodMarkedDeprecated.java b/test/transform/resource/after-delombok/WithMethodMarkedDeprecated.java index d81e76ed..dad6ff9b 100644 --- a/test/transform/resource/after-delombok/WithMethodMarkedDeprecated.java +++ b/test/transform/resource/after-delombok/WithMethodMarkedDeprecated.java @@ -7,6 +7,9 @@ class WithMethodMarkedDeprecated {  	int javadoc;  	WithMethodMarkedDeprecated(int annotation, int javadoc) {  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.Deprecated  	@java.lang.SuppressWarnings("all")  	public WithMethodMarkedDeprecated withAnnotation(final int annotation) { diff --git a/test/transform/resource/after-delombok/WithMethodMarkedDeprecatedAnnOnly.java b/test/transform/resource/after-delombok/WithMethodMarkedDeprecatedAnnOnly.java new file mode 100644 index 00000000..41139a0f --- /dev/null +++ b/test/transform/resource/after-delombok/WithMethodMarkedDeprecatedAnnOnly.java @@ -0,0 +1,14 @@ +class WithMethodMarkedDeprecatedAnnOnly { +	@Deprecated +	int annotation; +	WithMethodMarkedDeprecatedAnnOnly(int annotation) { +	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */ +	@java.lang.Deprecated +	@java.lang.SuppressWarnings("all") +	public WithMethodMarkedDeprecatedAnnOnly withAnnotation(final int annotation) { +		return this.annotation == annotation ? this : new WithMethodMarkedDeprecatedAnnOnly(annotation); +	} +} diff --git a/test/transform/resource/after-delombok/WithNested.java b/test/transform/resource/after-delombok/WithNested.java index 27b65577..b186dabf 100644 --- a/test/transform/resource/after-delombok/WithNested.java +++ b/test/transform/resource/after-delombok/WithNested.java @@ -5,6 +5,9 @@ public interface WithNested<Z> {  		public IAmStaticReally(final String x) {  			this.x = x;  		} +		/** +		 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +		 */  		@java.lang.SuppressWarnings("all")  		public WithNested.IAmStaticReally withX(final String x) {  			return this.x == x ? this : new WithNested.IAmStaticReally(x); diff --git a/test/transform/resource/after-delombok/WithOnClass.java b/test/transform/resource/after-delombok/WithOnClass.java index d6fb6fdf..0fa973eb 100644 --- a/test/transform/resource/after-delombok/WithOnClass.java +++ b/test/transform/resource/after-delombok/WithOnClass.java @@ -1,8 +1,12 @@ +//version 8:  class WithOnClass1 {  	boolean isNone;  	boolean isPublic;  	WithOnClass1(boolean isNone, boolean isPublic) {  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WithOnClass1 withPublic(final boolean isPublic) {  		return this.isPublic == isPublic ? this : new WithOnClass1(this.isNone, isPublic); @@ -14,10 +18,16 @@ class WithOnClass2 {  	boolean isPackage;  	WithOnClass2(boolean isNone, boolean isProtected, boolean isPackage) {  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	protected WithOnClass2 withProtected(final boolean isProtected) {  		return this.isProtected == isProtected ? this : new WithOnClass2(this.isNone, isProtected, this.isPackage);  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	WithOnClass2 withPackage(final boolean isPackage) {  		return this.isPackage == isPackage ? this : new WithOnClass2(this.isNone, this.isProtected, isPackage); @@ -29,10 +39,16 @@ class WithOnClass3 {  	String nonNull;  	WithOnClass3(String couldBeNull, String nonNull) {  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WithOnClass3 withCouldBeNull(final String couldBeNull) {  		return this.couldBeNull == couldBeNull ? this : new WithOnClass3(couldBeNull, this.nonNull);  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WithOnClass3 withNonNull(@lombok.NonNull final String nonNull) {  		if (nonNull == null) { @@ -47,6 +63,9 @@ class WithOnClass4 {  	WithOnClass4(int y) {  		this.fY = y;  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WithOnClass4 withY(final int fY) {  		return this.fY == fY ? this : new WithOnClass4(fY); diff --git a/test/transform/resource/after-delombok/WithPlain.java b/test/transform/resource/after-delombok/WithPlain.java index 01fca04e..6a1c46e6 100644 --- a/test/transform/resource/after-delombok/WithPlain.java +++ b/test/transform/resource/after-delombok/WithPlain.java @@ -1,3 +1,4 @@ +//version 8: springframework dep is too new to run on j6  class WithPlain {  	int i;  	final int foo; @@ -5,11 +6,17 @@ class WithPlain {  		this.i = i;  		this.foo = foo;  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@org.springframework.lang.NonNull  	@java.lang.SuppressWarnings("all")  	public WithPlain withI(final int i) {  		return this.i == i ? this : new WithPlain(i, this.foo);  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@org.springframework.lang.NonNull  	@java.lang.SuppressWarnings("all")  	public WithPlain withFoo(final int foo) { diff --git a/test/transform/resource/after-delombok/WithWithGenerics.java b/test/transform/resource/after-delombok/WithWithGenerics.java index ac34f01a..d1cd3380 100644 --- a/test/transform/resource/after-delombok/WithWithGenerics.java +++ b/test/transform/resource/after-delombok/WithWithGenerics.java @@ -5,14 +5,23 @@ class WithWithGenerics<T, J extends T, L extends java.lang.Number> {  	int $i;  	public WithWithGenerics(J test, java.util.List<L> test2, java.util.List<? extends L> test3) {  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WithWithGenerics<T, J, L> withTest(final J test) {  		return this.test == test ? this : new WithWithGenerics<T, J, L>(test, this.test2, this.test3);  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WithWithGenerics<T, J, L> withTest2(final java.util.List<L> test2) {  		return this.test2 == test2 ? this : new WithWithGenerics<T, J, L>(this.test, test2, this.test3);  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WithWithGenerics<T, J, L> withTest3(final java.util.List<? extends L> test3) {  		return this.test3 == test3 ? this : new WithWithGenerics<T, J, L>(this.test, this.test2, test3); diff --git a/test/transform/resource/after-delombok/WithWithTypeAnnos.java b/test/transform/resource/after-delombok/WithWithTypeAnnos.java index bf7559ba..8bc1dc88 100644 --- a/test/transform/resource/after-delombok/WithWithTypeAnnos.java +++ b/test/transform/resource/after-delombok/WithWithTypeAnnos.java @@ -14,6 +14,9 @@ class WithWithTypeAnnos {  	WithWithTypeAnnos(@TA @TB List<String> foo) {  		this.foo = foo;  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WithWithTypeAnnos withFoo(@TA final List<String> foo) {  		return this.foo == foo ? this : new WithWithTypeAnnos(foo); diff --git a/test/transform/resource/after-delombok/WitherAccessLevel.java b/test/transform/resource/after-delombok/WitherAccessLevel.java index c687d645..eec79cb6 100644 --- a/test/transform/resource/after-delombok/WitherAccessLevel.java +++ b/test/transform/resource/after-delombok/WitherAccessLevel.java @@ -7,22 +7,37 @@ class WitherAccessLevel {  	boolean value;  	WitherAccessLevel(boolean isNone, boolean isPrivate, boolean isPackage, boolean isProtected, boolean isPublic, boolean value) {  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	private WitherAccessLevel withPrivate(final boolean isPrivate) {  		return this.isPrivate == isPrivate ? this : new WitherAccessLevel(this.isNone, isPrivate, this.isPackage, this.isProtected, this.isPublic, this.value);  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	WitherAccessLevel withPackage(final boolean isPackage) {  		return this.isPackage == isPackage ? this : new WitherAccessLevel(this.isNone, this.isPrivate, isPackage, this.isProtected, this.isPublic, this.value);  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	protected WitherAccessLevel withProtected(final boolean isProtected) {  		return this.isProtected == isProtected ? this : new WitherAccessLevel(this.isNone, this.isPrivate, this.isPackage, isProtected, this.isPublic, this.value);  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WitherAccessLevel withPublic(final boolean isPublic) {  		return this.isPublic == isPublic ? this : new WitherAccessLevel(this.isNone, this.isPrivate, this.isPackage, this.isProtected, isPublic, this.value);  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WitherAccessLevel withValue(final boolean value) {  		return this.value == value ? this : new WitherAccessLevel(this.isNone, this.isPrivate, this.isPackage, this.isProtected, this.isPublic, value); diff --git a/test/transform/resource/after-delombok/WitherLegacyStar.java b/test/transform/resource/after-delombok/WitherLegacyStar.java index 69da9278..90d55cee 100644 --- a/test/transform/resource/after-delombok/WitherLegacyStar.java +++ b/test/transform/resource/after-delombok/WitherLegacyStar.java @@ -3,6 +3,9 @@ class WitherLegacyStar {  	WitherLegacyStar(int i) {  		this.i = i;  	} +	/** +	 * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed). +	 */  	@java.lang.SuppressWarnings("all")  	public WitherLegacyStar withI(final int i) {  		return this.i == i ? this : new WitherLegacyStar(i); | 
