aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/lombok/eclipse/handlers/HandleFieldDefaults.java2
-rw-r--r--src/core/lombok/javac/handlers/HandleFieldDefaults.java2
-rw-r--r--test/transform/resource/after-delombok/FieldDefaultsViaConfigOnRecord.java3
-rw-r--r--test/transform/resource/after-ecj/FieldDefaultsViaConfigOnRecord.java10
-rw-r--r--test/transform/resource/before/FieldDefaultsViaConfigOnRecord.java7
5 files changed, 24 insertions, 0 deletions
diff --git a/src/core/lombok/eclipse/handlers/HandleFieldDefaults.java b/src/core/lombok/eclipse/handlers/HandleFieldDefaults.java
index 5900e7ed..3297ba06 100644
--- a/src/core/lombok/eclipse/handlers/HandleFieldDefaults.java
+++ b/src/core/lombok/eclipse/handlers/HandleFieldDefaults.java
@@ -160,6 +160,8 @@ public class HandleFieldDefaults extends EclipseASTAdapter {
boolean defaultToFinal = makeFinalIsExplicit ? false : Boolean.TRUE.equals(typeNode.getAst().readConfiguration(ConfigurationKeys.FIELD_DEFAULTS_FINAL_EVERYWHERE));
if (!defaultToPrivate && !defaultToFinal && fieldDefaults == null) return;
+ // Do not apply field defaults to records if set using the the config system
+ if (fieldDefaults == null && !isClassOrEnum(typeNode)) return;
AccessLevel fdAccessLevel = (fieldDefaults != null && levelIsExplicit) ? fd.level() : defaultToPrivate ? AccessLevel.PRIVATE : null;
boolean fdToFinal = (fieldDefaults != null && makeFinalIsExplicit) ? fd.makeFinal() : defaultToFinal;
diff --git a/src/core/lombok/javac/handlers/HandleFieldDefaults.java b/src/core/lombok/javac/handlers/HandleFieldDefaults.java
index ebab67e3..9a6632dd 100644
--- a/src/core/lombok/javac/handlers/HandleFieldDefaults.java
+++ b/src/core/lombok/javac/handlers/HandleFieldDefaults.java
@@ -140,6 +140,8 @@ public class HandleFieldDefaults extends JavacASTAdapter {
boolean defaultToFinal = makeFinalIsExplicit ? false : Boolean.TRUE.equals(typeNode.getAst().readConfiguration(ConfigurationKeys.FIELD_DEFAULTS_FINAL_EVERYWHERE));
if (!defaultToPrivate && !defaultToFinal && fieldDefaults == null) return;
+ // Do not apply field defaults to records if set using the the config system
+ if (fieldDefaults == null && !isClassOrEnum(typeNode)) return;
AccessLevel fdAccessLevel = (fieldDefaults != null && levelIsExplicit) ? fd.level() : defaultToPrivate ? AccessLevel.PRIVATE : null;
boolean fdToFinal = (fieldDefaults != null && makeFinalIsExplicit) ? fd.makeFinal() : defaultToFinal;
diff --git a/test/transform/resource/after-delombok/FieldDefaultsViaConfigOnRecord.java b/test/transform/resource/after-delombok/FieldDefaultsViaConfigOnRecord.java
new file mode 100644
index 00000000..1a2ce882
--- /dev/null
+++ b/test/transform/resource/after-delombok/FieldDefaultsViaConfigOnRecord.java
@@ -0,0 +1,3 @@
+// version 14:
+public record FieldDefaultsViaConfigOnRecord(String a, String b) {
+}
diff --git a/test/transform/resource/after-ecj/FieldDefaultsViaConfigOnRecord.java b/test/transform/resource/after-ecj/FieldDefaultsViaConfigOnRecord.java
new file mode 100644
index 00000000..44ef0d4c
--- /dev/null
+++ b/test/transform/resource/after-ecj/FieldDefaultsViaConfigOnRecord.java
@@ -0,0 +1,10 @@
+// version 14:
+public record FieldDefaultsViaConfigOnRecord(String a, String b) {
+/* Implicit */ private final String a;
+/* Implicit */ private final String b;
+ public FieldDefaultsViaConfigOnRecord(String a, String b) {
+ super();
+ .a = a;
+ .b = b;
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/before/FieldDefaultsViaConfigOnRecord.java b/test/transform/resource/before/FieldDefaultsViaConfigOnRecord.java
new file mode 100644
index 00000000..e72179e9
--- /dev/null
+++ b/test/transform/resource/before/FieldDefaultsViaConfigOnRecord.java
@@ -0,0 +1,7 @@
+// version 14:
+//CONF: lombok.fieldDefaults.defaultFinal = true
+//CONF: lombok.fieldDefaults.defaultPrivate = true
+//unchanged
+
+public record FieldDefaultsViaConfigOnRecord(String a, String b) {
+} \ No newline at end of file