From 37434ba0cba68ea232efea0824d3f71e5e287dc2 Mon Sep 17 00:00:00 2001
From: Reinier Zwitserloot
Date: Tue, 3 Jul 2018 05:40:52 +0200
Subject: [Fixes #1347] issues with no-args constructor and Builder.Default now
documented and fixed.
---
doc/changelog.markdown | 1 +
website/templates/features/Builder.html | 2 ++
2 files changed, 3 insertions(+)
diff --git a/doc/changelog.markdown b/doc/changelog.markdown
index 07f10e76..8166f3d1 100644
--- a/doc/changelog.markdown
+++ b/doc/changelog.markdown
@@ -4,6 +4,7 @@ Lombok Changelog
### v1.18.1 "Edgy Guinea Pig"
* BUGFIX: Equals and hashCode again exclude transient fields by default. [Issue #1724](https://github.com/rzwitserloot/lombok/issues/1724)
* FEATURE: You can now make builders for type hierarchies, using the new (experimental) `@SuperBuilder` annotation. Thanks for the contribution, Jan Rieke. [`@SuperBuilder` documentation](https://projectlombok.org/features/experimental/SuperBuilder)
+* FEATURE: `@NoArgsConstructor`, including forcing one with `lombok.config: lombok.noArgsConstructor.extraPrivate=true` now take any defaults set with `@Builder.Default` into account. [Issue #1347](https://github.com/rzwitserloot/lombok/issues/1347)
### v1.18.0 (June 5th, 2018)
* BREAKING CHANGE: The in 1.16.22 introduced configuration key `lombok.noArgsConstructor.extraPrivate` is now `false` by default. [Issue #1708](https://github.com/rzwitserloot/lombok/issues/1708)
diff --git a/website/templates/features/Builder.html b/website/templates/features/Builder.html
index 96a30d99..4693d222 100644
--- a/website/templates/features/Builder.html
+++ b/website/templates/features/Builder.html
@@ -158,6 +158,8 @@
An ArrayList is used to store added elements as call methods of a @Singular marked field, if the target collection is from the java.util package, even if the collection is a set or map. Because lombok ensures that generated collections are compacted, a new backing instance of a set or map must be constructed anyway, and storing the data as an ArrayList during the build process is more efficient that storing it as a map or set. This behaviour is not externally visible, an implementation detail of the current implementation of the java.util recipes for @Singular @Builder.
With toBuilder = true applied to methods, any type parameter of the annotated method itself must also show up in the return type.
+
+ The initializer on a @Builder.Default field is removed and stored in a static method, in order to guarantee that this initializer won't be executed at all if a value is specified in the build. This does mean the initializer cannot refer to this, super or any non-static member. If lombok generates a constructor for you, it'll also initialize this field with the initializer.
@f.smallPrint>
@f.scaffold>
--
cgit