diff --git a/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java b/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
index d459c178..709dcc84 100644
--- a/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
+++ b/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
@@ -1028,6 +1028,14 @@ public class EclipsePatcher implements AgentLauncher.AgentLaunchable {
.request(StackRequest.RETURN_VALUE, StackRequest.PARAM1)
.wrapMethod(new Hook("lombok.launch.PatchFixesHider$Tests", "getBundle", "java.lang.Object", "java.lang.Object", "java.lang.Class"))
.build());
+
+ sm.addScriptIfWitness(new String[] {"lombok/transform/TestWithEcj"}, ScriptBuilder.exitEarly()
+ .target(new MethodTarget("org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration", "print"))
+ .decisionMethod(new Hook("lombok.launch.PatchFixesHider$Tests", "isImplicitCanonicalConstructor", "boolean", "org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration", "java.lang.Object"))
+ .valueMethod(new Hook("lombok.launch.PatchFixesHider$Tests", "returnStringBuffer", "java.lang.StringBuffer", "java.lang.Object", "java.lang.StringBuffer"))
+ .request(StackRequest.THIS, StackRequest.PARAM2)
+ .transplant()
+ .build());
}
}
diff --git a/src/eclipseAgent/lombok/launch/PatchFixesHider.java b/src/eclipseAgent/lombok/launch/PatchFixesHider.java
index 955bf07f..00c333a4 100755
--- a/src/eclipseAgent/lombok/launch/PatchFixesHider.java
+++ b/src/eclipseAgent/lombok/launch/PatchFixesHider.java
@@ -21,6 +21,9 @@
*/
package lombok.launch;
+import static lombok.eclipse.EcjAugments.ASTNode_generatedBy;
+import static lombok.eclipse.Eclipse.*;
+
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -62,8 +65,6 @@ import org.eclipse.jdt.internal.corext.refactoring.structure.MemberVisibilityAdj
import lombok.permit.Permit;
-import static lombok.eclipse.EcjAugments.ASTNode_generatedBy;
-
/** These contain a mix of the following:
*
* - 'dependency free' method wrappers that cross the shadowloader barrier.
@@ -925,5 +926,13 @@ final class PatchFixesHider {
}
return null;
}
+
+ public static boolean isImplicitCanonicalConstructor(AbstractMethodDeclaration method, Object parameter) {
+ return (method.bits & IsCanonicalConstructor) != 0 && (method.bits & IsImplicit) != 0;
+ }
+
+ public static StringBuffer returnStringBuffer(Object p1, StringBuffer buffer) {
+ return buffer;
+ }
}
}
diff --git a/test/core/src/lombok/RunTestsViaEcj.java b/test/core/src/lombok/RunTestsViaEcj.java
index 699b33ed..d46a890f 100644
--- a/test/core/src/lombok/RunTestsViaEcj.java
+++ b/test/core/src/lombok/RunTestsViaEcj.java
@@ -99,6 +99,7 @@ public class RunTestsViaEcj extends AbstractRunTests {
warnings.put(CompilerOptions.OPTION_ReportNonStaticAccessToStatic, "warning");
warnings.put("org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures", "ignore");
warnings.put(CompilerOptions.OPTION_Source, (ecjCompilerVersion < 9 ? "1." : "") + ecjCompilerVersion);
+ warnings.put("org.eclipse.jdt.core.compiler.codegen.useStringConcatFactory", "disabled");
options.set(warnings);
return options;
}
diff --git a/test/transform/resource/after-ecj/BuilderSimpleOnRecord.java b/test/transform/resource/after-ecj/BuilderSimpleOnRecord.java
index f866cd35..860b4363 100644
--- a/test/transform/resource/after-ecj/BuilderSimpleOnRecord.java
+++ b/test/transform/resource/after-ecj/BuilderSimpleOnRecord.java
@@ -30,11 +30,6 @@ public @lombok.Builder(access = lombok.AccessLevel.PROTECTED) record BuilderSimp
}
/* Implicit */ private final List l;
/* Implicit */ private final String a;
- public BuilderSimpleOnRecord(List l, String a) {
- super();
- .l = l;
- .a = a;
- }
protected static @java.lang.SuppressWarnings("all") BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder builder() {
return new BuilderSimpleOnRecord.BuilderSimpleOnRecordBuilder();
}
diff --git a/test/transform/resource/after-ecj/BuilderSingularOnRecord.java b/test/transform/resource/after-ecj/BuilderSingularOnRecord.java
index 2db38515..10d109ed 100644
--- a/test/transform/resource/after-ecj/BuilderSingularOnRecord.java
+++ b/test/transform/resource/after-ecj/BuilderSingularOnRecord.java
@@ -117,12 +117,6 @@ public @Builder record BuilderSingularOnRecord(List children, Collection scarves
/* Implicit */ private final List children;
/* Implicit */ private final Collection extends Number> scarves;
/* Implicit */ private final List rawList;
- public BuilderSingularOnRecord(@Singular List children, @Singular Collection extends Number> scarves, @SuppressWarnings("all") @Singular("rawList") List rawList) {
- super();
- .children = children;
- .scarves = scarves;
- .rawList = rawList;
- }
public static @java.lang.SuppressWarnings("all") BuilderSingularOnRecord.BuilderSingularOnRecordBuilder builder() {
return new BuilderSingularOnRecord.BuilderSingularOnRecordBuilder();
}
diff --git a/test/transform/resource/after-ecj/ConstructorsOnRecord.java b/test/transform/resource/after-ecj/ConstructorsOnRecord.java
index f1d4feb4..87d9e69c 100644
--- a/test/transform/resource/after-ecj/ConstructorsOnRecord.java
+++ b/test/transform/resource/after-ecj/ConstructorsOnRecord.java
@@ -5,9 +5,4 @@ import lombok.RequiredArgsConstructor;
public @AllArgsConstructor @RequiredArgsConstructor @NoArgsConstructor record ConstructorsOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public ConstructorsOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/DataOnRecord.java b/test/transform/resource/after-ecj/DataOnRecord.java
index 64ee28a2..047706a7 100644
--- a/test/transform/resource/after-ecj/DataOnRecord.java
+++ b/test/transform/resource/after-ecj/DataOnRecord.java
@@ -3,9 +3,4 @@ import lombok.Data;
public @Data record DataOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public DataOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/EqualsAndHashCodeOnRecord.java b/test/transform/resource/after-ecj/EqualsAndHashCodeOnRecord.java
index 583191e6..8b36937c 100644
--- a/test/transform/resource/after-ecj/EqualsAndHashCodeOnRecord.java
+++ b/test/transform/resource/after-ecj/EqualsAndHashCodeOnRecord.java
@@ -3,9 +3,4 @@ import lombok.EqualsAndHashCode;
public @EqualsAndHashCode record EqualsAndHashCodeOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public EqualsAndHashCodeOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/ExtensionMethodOnRecord.java b/test/transform/resource/after-ecj/ExtensionMethodOnRecord.java
index eb6c5dbf..3350199a 100644
--- a/test/transform/resource/after-ecj/ExtensionMethodOnRecord.java
+++ b/test/transform/resource/after-ecj/ExtensionMethodOnRecord.java
@@ -9,9 +9,6 @@ public @ExtensionMethod(ExtensionMethodOnRecord.Extensions.class) record Extensi
return Integer.valueOf(s);
}
}
- public ExtensionMethodOnRecord() {
- super();
- }
public void test() {
ExtensionMethodOnRecord.Extensions.intValue("1");
}
diff --git a/test/transform/resource/after-ecj/FieldDefaultsOnRecord.java b/test/transform/resource/after-ecj/FieldDefaultsOnRecord.java
index cc1a23b3..601d7488 100644
--- a/test/transform/resource/after-ecj/FieldDefaultsOnRecord.java
+++ b/test/transform/resource/after-ecj/FieldDefaultsOnRecord.java
@@ -2,9 +2,4 @@
public @lombok.experimental.FieldDefaults(makeFinal = true) record FieldDefaultsOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public FieldDefaultsOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/FieldDefaultsViaConfigOnRecord.java b/test/transform/resource/after-ecj/FieldDefaultsViaConfigOnRecord.java
index 44ef0d4c..34b70675 100644
--- a/test/transform/resource/after-ecj/FieldDefaultsViaConfigOnRecord.java
+++ b/test/transform/resource/after-ecj/FieldDefaultsViaConfigOnRecord.java
@@ -2,9 +2,4 @@
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/after-ecj/FieldNameConstantsOnRecord.java b/test/transform/resource/after-ecj/FieldNameConstantsOnRecord.java
index 5d3b01da..cec19f3b 100644
--- a/test/transform/resource/after-ecj/FieldNameConstantsOnRecord.java
+++ b/test/transform/resource/after-ecj/FieldNameConstantsOnRecord.java
@@ -18,11 +18,4 @@ public @FieldNameConstants(level = AccessLevel.PACKAGE) record FieldNameConstant
static double skipMeToo;
() {
}
- public FieldNameConstantsOnRecord(String iAmADvdPlayer, int $skipMe, int andMe, String butPrintMePlease) {
- super();
- .iAmADvdPlayer = iAmADvdPlayer;
- .$skipMe = $skipMe;
- .andMe = andMe;
- .butPrintMePlease = butPrintMePlease;
- }
}
diff --git a/test/transform/resource/after-ecj/GetterOnRecord.java b/test/transform/resource/after-ecj/GetterOnRecord.java
index 8ce516bf..735f0c80 100644
--- a/test/transform/resource/after-ecj/GetterOnRecord.java
+++ b/test/transform/resource/after-ecj/GetterOnRecord.java
@@ -3,9 +3,4 @@ import lombok.Getter;
public @Getter record GetterOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public GetterOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/JacksonizedOnRecord.java b/test/transform/resource/after-ecj/JacksonizedOnRecord.java
index 46e592bb..3a27e260 100644
--- a/test/transform/resource/after-ecj/JacksonizedOnRecord.java
+++ b/test/transform/resource/after-ecj/JacksonizedOnRecord.java
@@ -58,11 +58,6 @@ public @lombok.extern.jackson.Jacksonized @lombok.Builder @JsonIgnoreProperties
}
/* Implicit */ private final String string;
/* Implicit */ private final List values;
- public JacksonizedOnRecord(@JsonProperty("test") @Nullable String string, @lombok.Singular List values) {
- super();
- .string = string;
- .values = values;
- }
public static @java.lang.SuppressWarnings("all") JacksonizedOnRecord.JacksonizedOnRecordBuilder builder() {
return new JacksonizedOnRecord.JacksonizedOnRecordBuilder();
}
diff --git a/test/transform/resource/after-ecj/LockedInRecord.java b/test/transform/resource/after-ecj/LockedInRecord.java
index 9801227a..9c5d5ebd 100644
--- a/test/transform/resource/after-ecj/LockedInRecord.java
+++ b/test/transform/resource/after-ecj/LockedInRecord.java
@@ -3,11 +3,6 @@ public record LockedInRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
private final java.util.concurrent.locks.Lock $lock = new java.util.concurrent.locks.ReentrantLock();
- public LockedInRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
public @Locked void foo() {
String foo = "bar";
}
diff --git a/test/transform/resource/after-ecj/LoggerConfigOnRecord.java b/test/transform/resource/after-ecj/LoggerConfigOnRecord.java
index 3e12cbff..2a0057f6 100644
--- a/test/transform/resource/after-ecj/LoggerConfigOnRecord.java
+++ b/test/transform/resource/after-ecj/LoggerConfigOnRecord.java
@@ -3,9 +3,4 @@ import lombok.extern.slf4j.Slf4j;
public @Slf4j record LoggerConfigOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public LoggerConfigOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/LoggerFloggerRecord.java b/test/transform/resource/after-ecj/LoggerFloggerRecord.java
index dc64c335..7db8aabe 100644
--- a/test/transform/resource/after-ecj/LoggerFloggerRecord.java
+++ b/test/transform/resource/after-ecj/LoggerFloggerRecord.java
@@ -6,10 +6,6 @@ class LoggerFloggerRecord {
private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass();
() {
}
- public Inner(String x) {
- super();
- .x = x;
- }
}
LoggerFloggerRecord() {
super();
diff --git a/test/transform/resource/after-ecj/LoggerSlf4jOnRecord.java b/test/transform/resource/after-ecj/LoggerSlf4jOnRecord.java
index 91343ff2..c7502563 100644
--- a/test/transform/resource/after-ecj/LoggerSlf4jOnRecord.java
+++ b/test/transform/resource/after-ecj/LoggerSlf4jOnRecord.java
@@ -6,9 +6,4 @@ public @Slf4j record LoggerSlf4jOnRecord(String a, String b) {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jOnRecord.class);
() {
}
- public LoggerSlf4jOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/SetterOnRecord.java b/test/transform/resource/after-ecj/SetterOnRecord.java
index e65eb1bd..f91b68c2 100644
--- a/test/transform/resource/after-ecj/SetterOnRecord.java
+++ b/test/transform/resource/after-ecj/SetterOnRecord.java
@@ -3,9 +3,4 @@ import lombok.Setter;
public @Setter record SetterOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public SetterOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/SynchronizedInRecord.java b/test/transform/resource/after-ecj/SynchronizedInRecord.java
index 4b586f3f..f555f5e8 100644
--- a/test/transform/resource/after-ecj/SynchronizedInRecord.java
+++ b/test/transform/resource/after-ecj/SynchronizedInRecord.java
@@ -3,11 +3,6 @@ public record SynchronizedInRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
private final java.lang.Object $lock = new java.lang.Object[0];
- public SynchronizedInRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
public @Synchronized void foo() {
String foo = "bar";
}
diff --git a/test/transform/resource/after-ecj/ToStringOnRecord.java b/test/transform/resource/after-ecj/ToStringOnRecord.java
index 9ca18e8c..de153ea2 100644
--- a/test/transform/resource/after-ecj/ToStringOnRecord.java
+++ b/test/transform/resource/after-ecj/ToStringOnRecord.java
@@ -3,9 +3,4 @@ import lombok.ToString;
public @ToString record ToStringOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public ToStringOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/UtilityClassOnRecord.java b/test/transform/resource/after-ecj/UtilityClassOnRecord.java
index 8ffa8909..6a404e26 100644
--- a/test/transform/resource/after-ecj/UtilityClassOnRecord.java
+++ b/test/transform/resource/after-ecj/UtilityClassOnRecord.java
@@ -3,9 +3,4 @@ import lombok.experimental.UtilityClass;
public @UtilityClass record UtilityClassOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public UtilityClassOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/ValueOnRecord.java b/test/transform/resource/after-ecj/ValueOnRecord.java
index 47535305..13987ca0 100644
--- a/test/transform/resource/after-ecj/ValueOnRecord.java
+++ b/test/transform/resource/after-ecj/ValueOnRecord.java
@@ -3,9 +3,4 @@ import lombok.Value;
public @Value record ValueOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public ValueOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
}
diff --git a/test/transform/resource/after-ecj/WithByOnRecord.java b/test/transform/resource/after-ecj/WithByOnRecord.java
index 161382d9..a6ec01fb 100644
--- a/test/transform/resource/after-ecj/WithByOnRecord.java
+++ b/test/transform/resource/after-ecj/WithByOnRecord.java
@@ -3,11 +3,6 @@ import lombok.experimental.WithBy;
public @WithBy record WithByOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public WithByOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
public @java.lang.SuppressWarnings("all") WithByOnRecord withABy(final java.util.function.Function super String, ? extends String> transformer) {
return new WithByOnRecord(transformer.apply(this.a), this.b);
}
diff --git a/test/transform/resource/after-ecj/WithByOnRecordComponent.java b/test/transform/resource/after-ecj/WithByOnRecordComponent.java
index efc62161..5502eb06 100644
--- a/test/transform/resource/after-ecj/WithByOnRecordComponent.java
+++ b/test/transform/resource/after-ecj/WithByOnRecordComponent.java
@@ -3,11 +3,6 @@ import lombok.experimental.WithBy;
public record WithByOnRecordComponent(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public WithByOnRecordComponent( String a, String b) {
- super();
- .a = a;
- .b = b;
- }
public @java.lang.SuppressWarnings("all") WithByOnRecordComponent withABy(final java.util.function.Function super String, ? extends String> transformer) {
return new WithByOnRecordComponent(transformer.apply(this.a), this.b);
}
diff --git a/test/transform/resource/after-ecj/WithOnRecord.java b/test/transform/resource/after-ecj/WithOnRecord.java
index d62bbfab..1b34e661 100644
--- a/test/transform/resource/after-ecj/WithOnRecord.java
+++ b/test/transform/resource/after-ecj/WithOnRecord.java
@@ -3,11 +3,6 @@ import lombok.With;
public @With record WithOnRecord(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public WithOnRecord(String a, String b) {
- super();
- .a = a;
- .b = b;
- }
/**
* @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed).
*/
diff --git a/test/transform/resource/after-ecj/WithOnRecordComponent.java b/test/transform/resource/after-ecj/WithOnRecordComponent.java
index a141fa46..7d210a0a 100644
--- a/test/transform/resource/after-ecj/WithOnRecordComponent.java
+++ b/test/transform/resource/after-ecj/WithOnRecordComponent.java
@@ -3,11 +3,6 @@ import lombok.With;
public record WithOnRecordComponent(String a, String b) {
/* Implicit */ private final String a;
/* Implicit */ private final String b;
- public WithOnRecordComponent( String a, String b) {
- super();
- .a = a;
- .b = b;
- }
/**
* @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed).
*/