aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/configuration/src/lombok/core/configuration/TestConfiguration.java4
-rw-r--r--test/core/src/lombok/AbstractRunTests.java24
-rw-r--r--test/core/src/lombok/DirectoryRunner.java20
-rw-r--r--test/core/src/lombok/LombokTestSource.java4
-rw-r--r--test/core/src/lombok/RunTestsViaDelombok.java2
-rw-r--r--test/core/src/lombok/RunTestsViaEcj.java108
-rw-r--r--test/core/src/lombok/TestBase.java (renamed from test/transform/src/lombok/transform/RunTransformTests.java)8
-rw-r--r--test/core/src/lombok/TestEclipse.java (renamed from test/core/src/lombok/RunAllTests.java)6
-rw-r--r--test/core/src/lombok/TestJavac.java31
-rw-r--r--test/pretty/resource/after/ThisParameter.java34
-rw-r--r--test/pretty/resource/before/ThisParameter.java41
-rw-r--r--test/stubs/com/fasterxml/jackson/annotation/JsonAnySetter.java12
-rw-r--r--test/transform/resource/after-delombok/BuilderConstructorJavadoc.java85
-rw-r--r--test/transform/resource/after-delombok/BuilderDefaults.java8
-rw-r--r--test/transform/resource/after-delombok/CheckerFrameworkSuperBuilder.java30
-rw-r--r--test/transform/resource/after-delombok/DelegateAlreadyImplemented.java43
-rw-r--r--test/transform/resource/after-delombok/DelegateGenerics.java32
-rw-r--r--test/transform/resource/after-delombok/DelegateWithVarargs2.java12
-rw-r--r--test/transform/resource/after-delombok/EqualsAndHashCodeRank.java31
-rw-r--r--test/transform/resource/after-delombok/GetterLazyArguments.java101
-rw-r--r--test/transform/resource/after-delombok/GetterSetterJavadoc.java2
-rw-r--r--test/transform/resource/after-delombok/JacksonBuilderSingular.java177
-rw-r--r--test/transform/resource/after-delombok/LoggerCommons.java5
-rw-r--r--test/transform/resource/after-delombok/LoggerCustomWithTopicAndName.java6
-rw-r--r--test/transform/resource/after-delombok/LoggerJBossLog.java6
-rw-r--r--test/transform/resource/after-delombok/LoggerJul.java5
-rw-r--r--test/transform/resource/after-delombok/LoggerLog4j.java5
-rw-r--r--test/transform/resource/after-delombok/LoggerLog4j2.java5
-rw-r--r--test/transform/resource/after-delombok/LoggerSlf4j.java17
-rw-r--r--test/transform/resource/after-delombok/LoggerSlf4jInvalidTopic.java5
-rw-r--r--test/transform/resource/after-delombok/LoggerXSlf4j.java5
-rw-r--r--test/transform/resource/after-delombok/SkipSuppressWarnings.java24
-rw-r--r--test/transform/resource/after-delombok/SuperBuilderBasic.java4
-rw-r--r--test/transform/resource/after-delombok/SuperBuilderCustomized.java15
-rw-r--r--test/transform/resource/after-delombok/TypeUseAnnotations.java10
-rw-r--r--test/transform/resource/after-delombok/ValLambda.java6
-rw-r--r--test/transform/resource/after-delombok/ValueStaticConstructorOf.java10
-rw-r--r--test/transform/resource/after-ecj/BuilderConstructorJavadoc.java40
-rw-r--r--test/transform/resource/after-ecj/BuilderDefaults.java10
-rw-r--r--test/transform/resource/after-ecj/CheckerFrameworkSuperBuilder.java37
-rw-r--r--test/transform/resource/after-ecj/DelegateAlreadyImplemented.java29
-rw-r--r--test/transform/resource/after-ecj/DelegateGenerics.java24
-rw-r--r--test/transform/resource/after-ecj/DelegateWithVarargs2.java17
-rw-r--r--test/transform/resource/after-ecj/EqualsAndHashCodeAnnotated.java53
-rw-r--r--test/transform/resource/after-ecj/EqualsAndHashCodeRank.java36
-rw-r--r--test/transform/resource/after-ecj/GetterLazyArguments.java106
-rw-r--r--test/transform/resource/after-ecj/JacksonBuilderSingular.java164
-rw-r--r--test/transform/resource/after-ecj/LoggerCommons.java9
-rw-r--r--test/transform/resource/after-ecj/LoggerCustomWithTopicAndName.java9
-rw-r--r--test/transform/resource/after-ecj/LoggerJBossLog.java9
-rw-r--r--test/transform/resource/after-ecj/LoggerJul.java9
-rw-r--r--test/transform/resource/after-ecj/LoggerLog4j.java9
-rw-r--r--test/transform/resource/after-ecj/LoggerLog4j2.java9
-rw-r--r--test/transform/resource/after-ecj/LoggerSlf4j.java27
-rw-r--r--test/transform/resource/after-ecj/LoggerSlf4jInvalidTopic.java9
-rw-r--r--test/transform/resource/after-ecj/LoggerXSlf4j.java11
-rw-r--r--test/transform/resource/after-ecj/SimpleTypeResolution.java2
-rw-r--r--test/transform/resource/after-ecj/SkipSuppressWarnings.java27
-rw-r--r--test/transform/resource/after-ecj/SuperBuilderBasic.java4
-rw-r--r--test/transform/resource/after-ecj/SuperBuilderCustomized.java8
-rw-r--r--test/transform/resource/after-ecj/TypeUseAnnotations.java9
-rw-r--r--test/transform/resource/after-ecj/ValLambda.java6
-rw-r--r--test/transform/resource/after-ecj/ValueStaticConstructorOf.java14
-rw-r--r--test/transform/resource/before/BuilderConstructorJavadoc.java35
-rw-r--r--test/transform/resource/before/CheckerFrameworkSuperBuilder.java2
-rw-r--r--test/transform/resource/before/DelegateAlreadyImplemented.java45
-rw-r--r--test/transform/resource/before/DelegateGenerics.java14
-rw-r--r--test/transform/resource/before/DelegateWithVarargs2.java9
-rw-r--r--test/transform/resource/before/EqualsAndHashCodeRank.java7
-rw-r--r--test/transform/resource/before/GetterLazyArguments.java21
-rw-r--r--test/transform/resource/before/JacksonBuilderSingular.java31
-rw-r--r--test/transform/resource/before/LoggerCommons.java5
-rw-r--r--test/transform/resource/before/LoggerCustomWithTopicAndName.java5
-rw-r--r--test/transform/resource/before/LoggerJBossLog.java5
-rw-r--r--test/transform/resource/before/LoggerJul.java5
-rw-r--r--test/transform/resource/before/LoggerLog4j.java5
-rw-r--r--test/transform/resource/before/LoggerLog4j2.java5
-rw-r--r--test/transform/resource/before/LoggerSlf4j.java14
-rw-r--r--test/transform/resource/before/LoggerSlf4jInvalidTopic.java5
-rw-r--r--test/transform/resource/before/LoggerXSlf4j.java5
-rw-r--r--test/transform/resource/before/SkipSuppressWarnings.java9
-rw-r--r--test/transform/resource/before/SuperBuilderBasic.java2
-rw-r--r--test/transform/resource/before/SuperBuilderCustomized.java10
-rw-r--r--test/transform/resource/before/TypeUseAnnotations.java2
-rw-r--r--test/transform/resource/before/ValLambda.java6
-rw-r--r--test/transform/resource/before/ValLub.java10
-rw-r--r--test/transform/resource/messages-delombok/LoggerSlf4jInvalidTopic.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/CheckerFrameworkBasic.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/CheckerFrameworkSuperBuilder.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/LoggerSlf4jInvalidTopic.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/SkipSuppressWarnings.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/ValLambda.java.messages4
-rw-r--r--test/transform/resource/messages-idempotent/LoggerSlf4jInvalidTopic.java.messages1
93 files changed, 1781 insertions, 119 deletions
diff --git a/test/configuration/src/lombok/core/configuration/TestConfiguration.java b/test/configuration/src/lombok/core/configuration/TestConfiguration.java
index 3032daf3..504c36b2 100644
--- a/test/configuration/src/lombok/core/configuration/TestConfiguration.java
+++ b/test/configuration/src/lombok/core/configuration/TestConfiguration.java
@@ -65,8 +65,8 @@ public class TestConfiguration {
outStream.flush();
errStream.flush();
- String out = new String(rawOut.toByteArray()).replace("\r\n", "\n").replace('\\', '/').replaceAll(Pattern.quote(normalizedName) + "|" + Pattern.quote(baseName), "BASE/").trim();
- String err = new String(rawErr.toByteArray()).replace("\r\n", "\n").replace('\\', '/').replaceAll(Pattern.quote(normalizedName) + "|" + Pattern.quote(baseName), "BASE/").trim();
+ String out = new String(rawOut.toByteArray()).replace('\\', '/').replaceAll(Pattern.quote(normalizedName) + "|" + Pattern.quote(baseName), "BASE/").trim();
+ String err = new String(rawErr.toByteArray()).replace('\\', '/').replaceAll(Pattern.quote(normalizedName) + "|" + Pattern.quote(baseName), "BASE/").trim();
checkContent(directory, out, "out");
checkContent(directory, err, "err");
diff --git a/test/core/src/lombok/AbstractRunTests.java b/test/core/src/lombok/AbstractRunTests.java
index d223ae03..448f77ab 100644
--- a/test/core/src/lombok/AbstractRunTests.java
+++ b/test/core/src/lombok/AbstractRunTests.java
@@ -91,7 +91,7 @@ public abstract class AbstractRunTests {
}
});
- boolean changed = transformCode(messages, writer, file, sourceDirectives_.getSpecifiedEncoding(), sourceDirectives_.getFormatPreferences());
+ boolean changed = transformCode(messages, writer, file, sourceDirectives_.getSpecifiedEncoding(), sourceDirectives_.getFormatPreferences(), sourceDirectives_.minVersion());
boolean forceUnchanged = sourceDirectives_.forceUnchanged() || sourceDirectives_.isSkipCompareContent();
if (params.expectChanges() && !forceUnchanged && !changed) messages.add(new CompilerMessage(-1, -1, true, "not flagged modified"));
if (!params.expectChanges() && changed) messages.add(new CompilerMessage(-1, -1, true, "unexpected modification"));
@@ -101,7 +101,7 @@ public abstract class AbstractRunTests {
};
}
- protected abstract boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, File file, String encoding, Map<String, String> formatPreferences) throws Throwable;
+ protected abstract boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, File file, String encoding, Map<String, String> formatPreferences, int minVersion) throws Throwable;
protected String readFile(File file) throws IOException {
BufferedReader reader;
@@ -190,6 +190,8 @@ public abstract class AbstractRunTests {
for (CompilerMessage actualMessage : actualMessages) {
System.out.println(actualMessage);
}
+ System.out.println("**** Actual File ******");
+ System.out.println(lineNumber(actualFile));
System.out.println("*******************");
}
if (dumpActualFilesHere != null) {
@@ -199,6 +201,22 @@ public abstract class AbstractRunTests {
}
}
+ private CharSequence lineNumber(String content) {
+ StringBuilder out = new StringBuilder();
+ int pos = 0;
+ int ln = 1;
+ while (true) {
+ out.append(String.format("%4d ", ln));
+ int idx = content.indexOf('\n', pos);
+ if (idx == -1) {
+ return out.append(content.substring(pos));
+ }
+ out.append(content.substring(pos, idx + 1));
+ ln++;
+ pos = idx + 1;
+ }
+ }
+
@SuppressWarnings("null") /* eclipse bug workaround; it falsely thinks stuffAc will always be null. */
private static void compareMessages(String name, LombokImmutableList<CompilerMessageMatcher> expected, LinkedHashSet<CompilerMessage> actual) {
Iterator<CompilerMessageMatcher> expectedIterator = expected.iterator();
@@ -267,7 +285,7 @@ public abstract class AbstractRunTests {
endIdx--;
}
- return in.substring(0, endIdx);
+ return in.substring(0, endIdx + 1);
}
private static String[] removeBlanks(String[] in) {
diff --git a/test/core/src/lombok/DirectoryRunner.java b/test/core/src/lombok/DirectoryRunner.java
index b8b1da43..a174355d 100644
--- a/test/core/src/lombok/DirectoryRunner.java
+++ b/test/core/src/lombok/DirectoryRunner.java
@@ -47,7 +47,7 @@ public class DirectoryRunner extends Runner {
@Override public int getVersion() {
return Javac.getJavaCompilerVersion();
}
- },
+ },
JAVAC {
@Override public int getVersion() {
return DELOMBOK.getVersion();
@@ -82,8 +82,22 @@ public class DirectoryRunner extends Runner {
private static final FileFilter JAVA_FILE_FILTER = new FileFilter() {
@Override public boolean accept(File file) {
- return file.isFile() && file.getName().endsWith(".java") &&
- (DEBUG_FOCUS_ON_FILE.isEmpty() || DEBUG_FOCUS_ON_FILE.contains(file.getName()));
+ if (!file.isFile() || !file.getName().endsWith(".java")) return false;
+ boolean positiveFilter = false;
+ for (String dfof : DEBUG_FOCUS_ON_FILE) {
+ if (dfof.isEmpty()) continue;
+ if (!dfof.endsWith(".java")) dfof = dfof + ".java";
+ boolean invert = dfof.startsWith("!");
+ if (invert) dfof = dfof.substring(1);
+ positiveFilter = positiveFilter || !invert;
+ int starIdx = dfof.indexOf('*');
+ if (starIdx == -1) {
+ if (file.getName().equals(dfof)) return !invert;
+ } else {
+ if (file.getName().startsWith(dfof.substring(0, starIdx)) && file.getName().endsWith(dfof.substring(starIdx + 1))) return !invert;
+ }
+ }
+ return !positiveFilter;
}
};
diff --git a/test/core/src/lombok/LombokTestSource.java b/test/core/src/lombok/LombokTestSource.java
index b04f0ba0..57a32333 100644
--- a/test/core/src/lombok/LombokTestSource.java
+++ b/test/core/src/lombok/LombokTestSource.java
@@ -358,4 +358,8 @@ public class LombokTestSource {
if (specifiedEncoding == null || specifiedEncoding.equalsIgnoreCase(encoding)) return source;
return read0(sourceFolder, messagesFolder, fileName, specifiedEncoding);
}
+
+ public int minVersion() {
+ return Math.max(6, versionLowerLimit);
+ }
}
diff --git a/test/core/src/lombok/RunTestsViaDelombok.java b/test/core/src/lombok/RunTestsViaDelombok.java
index 0887de32..ffac8372 100644
--- a/test/core/src/lombok/RunTestsViaDelombok.java
+++ b/test/core/src/lombok/RunTestsViaDelombok.java
@@ -38,7 +38,7 @@ public class RunTestsViaDelombok extends AbstractRunTests {
private Delombok delombok = new Delombok();
@Override
- public boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, final File file, String encoding, Map<String, String> formatPreferences) throws Throwable {
+ public boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, final File file, String encoding, Map<String, String> formatPreferences, int version) throws Throwable {
delombok.setVerbose(true);
ChangedChecker cc = new ChangedChecker();
delombok.setFeedback(cc.feedback);
diff --git a/test/core/src/lombok/RunTestsViaEcj.java b/test/core/src/lombok/RunTestsViaEcj.java
index 3efe38f5..739d6316 100644
--- a/test/core/src/lombok/RunTestsViaEcj.java
+++ b/test/core/src/lombok/RunTestsViaEcj.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010-2014 The Project Lombok Authors.
+ * Copyright (C) 2010-2020 The Project Lombok Authors.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -23,25 +23,33 @@ package lombok;
import java.io.File;
import java.io.StringWriter;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
import lombok.eclipse.Eclipse;
import lombok.javac.CapturingDiagnosticListener.CompilerMessage;
+import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.compiler.CategorizedProblem;
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.internal.compiler.CompilationResult;
import org.eclipse.jdt.internal.compiler.Compiler;
import org.eclipse.jdt.internal.compiler.ICompilerRequestor;
import org.eclipse.jdt.internal.compiler.IErrorHandlingPolicy;
import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
-import org.eclipse.jdt.internal.compiler.batch.CompilationUnit;
import org.eclipse.jdt.internal.compiler.batch.FileSystem;
import org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
@@ -69,7 +77,8 @@ public class RunTestsViaEcj extends AbstractRunTests {
warnings.put(CompilerOptions.OPTION_ReportUnusedLabel, "ignore");
warnings.put(CompilerOptions.OPTION_ReportUnusedImport, "ignore");
warnings.put(CompilerOptions.OPTION_ReportUnusedPrivateMember, "ignore");
- warnings.put(CompilerOptions.OPTION_Source, "1." + Eclipse.getEcjCompilerVersion());
+ int ecjVersion = Eclipse.getEcjCompilerVersion();
+ warnings.put(CompilerOptions.OPTION_Source, (ecjVersion < 9 ? "1." : "") + ecjVersion);
options.set(warnings);
return options;
}
@@ -92,7 +101,7 @@ public class RunTestsViaEcj extends AbstractRunTests {
}
@Override
- public boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, File file, String encoding, Map<String, String> formatPreferences) throws Throwable {
+ public boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, File file, String encoding, Map<String, String> formatPreferences, int minVersion) throws Throwable {
final AtomicReference<CompilationResult> compilationResult_ = new AtomicReference<CompilationResult>();
final AtomicReference<CompilationUnitDeclaration> compilationUnit_ = new AtomicReference<CompilationUnitDeclaration>();
ICompilerRequestor bitbucketRequestor = new ICompilerRequestor() {
@@ -102,9 +111,10 @@ public class RunTestsViaEcj extends AbstractRunTests {
};
String source = readFile(file);
- final CompilationUnit sourceUnit = new CompilationUnit(source.toCharArray(), file.getName(), encoding == null ? "UTF-8" : encoding);
+ char[] sourceArray = source.toCharArray();
+ final org.eclipse.jdt.internal.compiler.batch.CompilationUnit sourceUnit = new org.eclipse.jdt.internal.compiler.batch.CompilationUnit(sourceArray, file.getName(), encoding == null ? "UTF-8" : encoding);
- Compiler ecjCompiler = new Compiler(createFileSystem(file), ecjErrorHandlingPolicy(), ecjCompilerOptions(), bitbucketRequestor, new DefaultProblemFactory(Locale.ENGLISH)) {
+ Compiler ecjCompiler = new Compiler(createFileSystem(file, minVersion), ecjErrorHandlingPolicy(), ecjCompilerOptions(), bitbucketRequestor, new DefaultProblemFactory(Locale.ENGLISH)) {
@Override protected synchronized void addCompilationUnit(ICompilationUnit inUnit, CompilationUnitDeclaration parsedUnit) {
if (inUnit == sourceUnit) compilationUnit_.set(parsedUnit);
super.addCompilationUnit(inUnit, parsedUnit);
@@ -125,10 +135,76 @@ public class RunTestsViaEcj extends AbstractRunTests {
if (cud == null) result.append("---- No CompilationUnit provided by ecj ----");
else result.append(cud.toString());
+ if (eclipseAvailable()) {
+ EclipseDomConversion.toDomAst(cud, sourceArray);
+ }
+
return true;
}
- private FileSystem createFileSystem(File file) {
+ private boolean eclipseAvailable() {
+ try {
+ Class.forName("org.eclipse.jdt.core.dom.CompilationUnit");
+ } catch (Throwable t) {
+ return false;
+ }
+
+ return true;
+ }
+
+ private static final String bootRuntimePath = System.getProperty("delombok.bootclasspath");
+
+ private static class EclipseDomConversion {
+ static CompilationUnit toDomAst(CompilationUnitDeclaration cud, final char[] source) {
+ Map<String, String> options = new HashMap<String, String>();
+ options.put(JavaCore.COMPILER_SOURCE, "11");
+ options.put("org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures", "enabled");
+ try {
+ org.eclipse.jdt.internal.core.CompilationUnit ccu = new org.eclipse.jdt.internal.core.CompilationUnit(null, null, null) {
+ @Override public char[] getContents() {
+ return source;
+ }
+ };
+ return AST.convertCompilationUnit(4, cud, options, false, ccu, 0, null);
+ } catch (SecurityException e) {
+ try {
+ debugClasspathConflicts("org/eclipse/jdt/internal/compiler");
+ } catch (Exception e2) {
+ throw Lombok.sneakyThrow(e2);
+ }
+ throw e;
+ }
+ }
+ }
+
+ @SuppressWarnings({"all"})
+ private static void debugClasspathConflicts(String prefixToLookFor) throws Exception {
+ String[] paths = System.getProperty("java.class.path").split(":");
+ for (String p : paths) {
+ Path cp = Paths.get(p);
+ if (Files.isDirectory(cp)) {
+ if (Files.isDirectory(cp.resolve(prefixToLookFor))) System.out.println("** DIR-BASED: " + cp);
+ } else if (Files.isRegularFile(cp)) {
+ JarFile jf = new JarFile(cp.toFile());
+ try {
+ Enumeration<JarEntry> jes = jf.entries();
+ while (jes.hasMoreElements()) {
+ JarEntry je = jes.nextElement();
+ if (je.getName().startsWith(prefixToLookFor)) {
+ System.out.println("** JAR-BASED: " + cp);
+ break;
+ }
+ }
+ } finally {
+ jf.close();
+ }
+ } else {
+ System.out.println("** MISSING: " + cp);
+ }
+ }
+ }
+
+ private FileSystem createFileSystem(File file, int minVersion) {
List<String> classpath = new ArrayList<String>();
for (Iterator<String> i = classpath.iterator(); i.hasNext();) {
if (FileSystem.getClasspath(i.next(), "UTF-8", null) == null) {
@@ -137,16 +213,14 @@ public class RunTestsViaEcj extends AbstractRunTests {
}
if (new File("bin").exists()) classpath.add("bin");
classpath.add("dist/lombok.jar");
- classpath.add("lib/oracleJDK8Environment/rt.jar");
- classpath.add("lib/test/commons-logging-commons-logging.jar");
- classpath.add("lib/test/org.slf4j-slf4j-api.jar");
- classpath.add("lib/test/org.slf4j-slf4j-ext.jar");
- classpath.add("lib/test/log4j-log4j.jar");
- classpath.add("lib/test/org.apache.logging.log4j-log4j-api.jar");
- classpath.add("lib/test/org.jboss.logging-jboss-logging.jar");
- classpath.add("lib/test/com.google.guava-guava.jar");
- classpath.add("lib/test/com.google.code.findbugs-findbugs.jar");
- classpath.add("lib/test/com.google.flogger-flogger.jar");
+ if (bootRuntimePath == null || bootRuntimePath.isEmpty()) throw new IllegalStateException("System property delombok.bootclasspath is not set; set it to the rt of java6 or java8");
+ classpath.add(bootRuntimePath);
+ for (File f : new File("lib/test").listFiles()) {
+ String fn = f.getName();
+ if (fn.length() < 4) continue;
+ if (!fn.substring(fn.length() - 4).toLowerCase().equals(".jar")) continue;
+ classpath.add("lib/test/" + fn);
+ }
return new FileSystem(classpath.toArray(new String[0]), new String[] {file.getAbsolutePath()}, "UTF-8");
}
}
diff --git a/test/transform/src/lombok/transform/RunTransformTests.java b/test/core/src/lombok/TestBase.java
index 0afbc5d6..4b0c02f3 100644
--- a/test/transform/src/lombok/transform/RunTransformTests.java
+++ b/test/core/src/lombok/TestBase.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011-2012 The Project Lombok Authors.
+ * Copyright (C) 2011-2020 The Project Lombok Authors.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -19,13 +19,13 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-package lombok.transform;
+package lombok;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
-@SuiteClasses({TestLombokFilesIdempotent.class, TestSourceFiles.class, TestWithDelombok.class, TestWithEcj.class})
-public class RunTransformTests {
+@SuiteClasses({lombok.core.configuration.RunConfigurationTests.class, lombok.core.RunCoreTests.class})
+public class TestBase {
}
diff --git a/test/core/src/lombok/RunAllTests.java b/test/core/src/lombok/TestEclipse.java
index 1ca76af5..9fe798bc 100644
--- a/test/core/src/lombok/RunAllTests.java
+++ b/test/core/src/lombok/TestEclipse.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011-2015 The Project Lombok Authors.
+ * Copyright (C) 2011-2020 The Project Lombok Authors.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -26,6 +26,6 @@ import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
-@SuiteClasses({lombok.transform.RunTransformTests.class, lombok.bytecode.RunBytecodeTests.class, lombok.core.configuration.RunConfigurationTests.class, lombok.core.RunCoreTests.class})
-public class RunAllTests {
+@SuiteClasses({lombok.transform.TestWithEcj.class})
+public class TestEclipse {
}
diff --git a/test/core/src/lombok/TestJavac.java b/test/core/src/lombok/TestJavac.java
new file mode 100644
index 00000000..fbc495ad
--- /dev/null
+++ b/test/core/src/lombok/TestJavac.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2011-2020 The Project Lombok Authors.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+package lombok;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses({lombok.bytecode.RunBytecodeTests.class, lombok.transform.TestLombokFilesIdempotent.class, lombok.transform.TestSourceFiles.class, lombok.transform.TestWithDelombok.class})
+public class TestJavac {
+}
diff --git a/test/pretty/resource/after/ThisParameter.java b/test/pretty/resource/after/ThisParameter.java
new file mode 100644
index 00000000..49452a59
--- /dev/null
+++ b/test/pretty/resource/after/ThisParameter.java
@@ -0,0 +1,34 @@
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+class ThisParameter {
+ void untagged(ThisParameter this, int i) {
+ // no content
+ }
+ void sourceTagged(@SourceTagged("source") ThisParameter this) {
+ // no content
+ }
+ void classTagged(@ClassTagged("class") ThisParameter this) {
+ // no content
+ }
+ void runtimeTagged(@RuntimeTagged("runtime") ThisParameter this) {
+ // no content
+ }
+ @Target(ElementType.PARAMETER)
+ @Retention(RetentionPolicy.SOURCE)
+ @interface SourceTagged {
+ String value();
+ }
+ @Target(ElementType.PARAMETER)
+ @Retention(RetentionPolicy.CLASS)
+ @interface ClassTagged {
+ String value();
+ }
+ @Target(ElementType.PARAMETER)
+ @Retention(RetentionPolicy.RUNTIME)
+ @interface RuntimeTagged {
+ String value();
+ }
+}
diff --git a/test/pretty/resource/before/ThisParameter.java b/test/pretty/resource/before/ThisParameter.java
new file mode 100644
index 00000000..d95c0261
--- /dev/null
+++ b/test/pretty/resource/before/ThisParameter.java
@@ -0,0 +1,41 @@
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+class ThisParameter {
+
+ void untagged(ThisParameter this, int i) {
+ // no content
+ }
+
+ void sourceTagged(@SourceTagged("source") ThisParameter this) {
+ // no content
+ }
+
+ void classTagged(@ClassTagged("class") ThisParameter this) {
+ // no content
+ }
+
+ void runtimeTagged(@RuntimeTagged("runtime") ThisParameter this) {
+ // no content
+ }
+
+ @Target(ElementType.PARAMETER)
+ @Retention(RetentionPolicy.SOURCE)
+ @interface SourceTagged {
+ String value();
+ }
+
+ @Target(ElementType.PARAMETER)
+ @Retention(RetentionPolicy.CLASS)
+ @interface ClassTagged {
+ String value();
+ }
+
+ @Target(ElementType.PARAMETER)
+ @Retention(RetentionPolicy.RUNTIME)
+ @interface RuntimeTagged {
+ String value();
+ }
+}
diff --git a/test/stubs/com/fasterxml/jackson/annotation/JsonAnySetter.java b/test/stubs/com/fasterxml/jackson/annotation/JsonAnySetter.java
new file mode 100644
index 00000000..51d2c3fa
--- /dev/null
+++ b/test/stubs/com/fasterxml/jackson/annotation/JsonAnySetter.java
@@ -0,0 +1,12 @@
+package com.fasterxml.jackson.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface JsonAnySetter {
+ boolean enabled() default true;
+}
diff --git a/test/transform/resource/after-delombok/BuilderConstructorJavadoc.java b/test/transform/resource/after-delombok/BuilderConstructorJavadoc.java
new file mode 100644
index 00000000..96673b1a
--- /dev/null
+++ b/test/transform/resource/after-delombok/BuilderConstructorJavadoc.java
@@ -0,0 +1,85 @@
+import java.util.List;
+
+class BuilderConstructorJavadoc<T> {
+ /**
+ * This is a comment
+ *
+ * @param basic tag is moved to the setter
+ * @param multiline a param comment
+ * can be on multiple lines and can use
+ * {@code @code} or <code>tags</code>
+ * @param predef don't copy this one
+ * @param predefWithJavadoc don't copy this one
+ */
+ BuilderConstructorJavadoc(int basic, int multiline, int predef, int predefWithJavadoc) {
+ }
+
+
+ public static class BuilderConstructorJavadocBuilder<T> {
+ @java.lang.SuppressWarnings("all")
+ private int basic;
+ @java.lang.SuppressWarnings("all")
+ private int multiline;
+ @java.lang.SuppressWarnings("all")
+ private int predef;
+ @java.lang.SuppressWarnings("all")
+ private int predefWithJavadoc;
+
+ public BuilderConstructorJavadocBuilder<T> predef(final int x) {
+ this.predef = x;
+ return this;
+ }
+
+ /**
+ * This javadoc remains untouched.
+ * @param x 1/100 of the thing
+ * @return the updated builder
+ */
+ public BuilderConstructorJavadocBuilder<T> predefWithJavadoc(final int x) {
+ this.predefWithJavadoc = x;
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ BuilderConstructorJavadocBuilder() {
+ }
+
+ /**
+ * @param basic tag is moved to the setter
+ * @return {@code this}.
+ */
+ @java.lang.SuppressWarnings("all")
+ public BuilderConstructorJavadoc.BuilderConstructorJavadocBuilder<T> basic(final int basic) {
+ this.basic = basic;
+ return this;
+ }
+
+ /**
+ * @param multiline a param comment
+ * can be on multiple lines and can use
+ * {@code @code} or <code>tags</code>
+ * @return {@code this}.
+ */
+ @java.lang.SuppressWarnings("all")
+ public BuilderConstructorJavadoc.BuilderConstructorJavadocBuilder<T> multiline(final int multiline) {
+ this.multiline = multiline;
+ return this;
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public BuilderConstructorJavadoc<T> build() {
+ return new BuilderConstructorJavadoc<T>(this.basic, this.multiline, this.predef, this.predefWithJavadoc);
+ }
+
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public java.lang.String toString() {
+ return "BuilderConstructorJavadoc.BuilderConstructorJavadocBuilder(basic=" + this.basic + ", multiline=" + this.multiline + ", predef=" + this.predef + ", predefWithJavadoc=" + this.predefWithJavadoc + ")";
+ }
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public static <T> BuilderConstructorJavadoc.BuilderConstructorJavadocBuilder<T> builder() {
+ return new BuilderConstructorJavadoc.BuilderConstructorJavadocBuilder<T>();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/BuilderDefaults.java b/test/transform/resource/after-delombok/BuilderDefaults.java
index 5a563024..42b751ce 100644
--- a/test/transform/resource/after-delombok/BuilderDefaults.java
+++ b/test/transform/resource/after-delombok/BuilderDefaults.java
@@ -85,10 +85,10 @@ public final class BuilderDefaults {
if (!(o instanceof BuilderDefaults)) return false;
final BuilderDefaults other = (BuilderDefaults) o;
if (this.getX() != other.getX()) return false;
+ if (this.getZ() != other.getZ()) return false;
final java.lang.Object this$name = this.getName();
final java.lang.Object other$name = other.getName();
if (this$name == null ? other$name != null : !this$name.equals(other$name)) return false;
- if (this.getZ() != other.getZ()) return false;
return true;
}
@java.lang.Override
@@ -97,10 +97,10 @@ public final class BuilderDefaults {
final int PRIME = 59;
int result = 1;
result = result * PRIME + this.getX();
- final java.lang.Object $name = this.getName();
- result = result * PRIME + ($name == null ? 43 : $name.hashCode());
final long $z = this.getZ();
result = result * PRIME + (int) ($z >>> 32 ^ $z);
+ final java.lang.Object $name = this.getName();
+ result = result * PRIME + ($name == null ? 43 : $name.hashCode());
return result;
}
@java.lang.Override
@@ -108,4 +108,4 @@ public final class BuilderDefaults {
public java.lang.String toString() {
return "BuilderDefaults(x=" + this.getX() + ", name=" + this.getName() + ", z=" + this.getZ() + ")";
}
-}
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/CheckerFrameworkSuperBuilder.java b/test/transform/resource/after-delombok/CheckerFrameworkSuperBuilder.java
index 0f7f8997..30408c3b 100644
--- a/test/transform/resource/after-delombok/CheckerFrameworkSuperBuilder.java
+++ b/test/transform/resource/after-delombok/CheckerFrameworkSuperBuilder.java
@@ -124,7 +124,7 @@ class CheckerFrameworkSuperBuilder {
return new CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl();
}
}
- public static class Child extends Parent {
+ public static class ZChild extends Parent {
int a;
int b;
@java.lang.SuppressWarnings("all")
@@ -132,7 +132,7 @@ class CheckerFrameworkSuperBuilder {
return 1;
}
@java.lang.SuppressWarnings("all")
- public static abstract class ChildBuilder<C extends CheckerFrameworkSuperBuilder.Child, B extends CheckerFrameworkSuperBuilder.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> {
+ public static abstract class ZChildBuilder<C extends CheckerFrameworkSuperBuilder.ZChild, B extends CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> {
@java.lang.SuppressWarnings("all")
private boolean a$set;
@java.lang.SuppressWarnings("all")
@@ -147,17 +147,17 @@ class CheckerFrameworkSuperBuilder {
@org.checkerframework.dataflow.qual.SideEffectFree
@java.lang.Override
@java.lang.SuppressWarnings("all")
- public abstract C build(@org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.Child this);
+ public abstract C build(@org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.ZChild this);
@org.checkerframework.checker.builder.qual.ReturnsReceiver
@java.lang.SuppressWarnings("all")
- public B a(@org.checkerframework.checker.builder.qual.NotCalledMethods("a") CheckerFrameworkSuperBuilder.Child.ChildBuilder<C, B> this, final int a) {
+ public B a(@org.checkerframework.checker.builder.qual.NotCalledMethods("a") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<C, B> this, final int a) {
this.a$value = a;
a$set = true;
return self();
}
@org.checkerframework.checker.builder.qual.ReturnsReceiver
@java.lang.SuppressWarnings("all")
- public B b(@org.checkerframework.checker.builder.qual.NotCalledMethods("b") CheckerFrameworkSuperBuilder.Child.ChildBuilder<C, B> this, final int b) {
+ public B b(@org.checkerframework.checker.builder.qual.NotCalledMethods("b") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<C, B> this, final int b) {
this.b = b;
return self();
}
@@ -165,41 +165,41 @@ class CheckerFrameworkSuperBuilder {
@java.lang.Override
@java.lang.SuppressWarnings("all")
public java.lang.String toString() {
- return "CheckerFrameworkSuperBuilder.Child.ChildBuilder(super=" + super.toString() + ", a$value=" + this.a$value + ", b=" + this.b + ")";
+ return "CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder(super=" + super.toString() + ", a$value=" + this.a$value + ", b=" + this.b + ")";
}
}
@java.lang.SuppressWarnings("all")
- private static final class ChildBuilderImpl extends CheckerFrameworkSuperBuilder.Child.ChildBuilder<CheckerFrameworkSuperBuilder.Child, CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl> {
+ 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 ChildBuilderImpl() {
+ private ZChildBuilderImpl() {
}
@java.lang.Override
@org.checkerframework.checker.builder.qual.ReturnsReceiver
@org.checkerframework.dataflow.qual.Pure
@java.lang.SuppressWarnings("all")
- protected CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl self() {
+ protected CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl self() {
return this;
}
@org.checkerframework.dataflow.qual.SideEffectFree
@java.lang.Override
@java.lang.SuppressWarnings("all")
- public CheckerFrameworkSuperBuilder.Child build(@org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl this) {
- return new CheckerFrameworkSuperBuilder.Child(this);
+ public CheckerFrameworkSuperBuilder.ZChild build(@org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl this) {
+ return new CheckerFrameworkSuperBuilder.ZChild(this);
}
}
@org.checkerframework.dataflow.qual.SideEffectFree
@java.lang.SuppressWarnings("all")
- protected Child(final CheckerFrameworkSuperBuilder.Child.ChildBuilder<?, ?> b) {
+ protected ZChild(final CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<?, ?> b) {
super(b);
if (b.a$set) this.a = b.a$value;
- else this.a = CheckerFrameworkSuperBuilder.Child.$default$a();
+ else this.a = CheckerFrameworkSuperBuilder.ZChild.$default$a();
this.b = b.b;
}
@org.checkerframework.dataflow.qual.SideEffectFree
@java.lang.SuppressWarnings("all")
- public static CheckerFrameworkSuperBuilder.Child.ChildBuilder<?, ?> builder() {
- return new CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl();
+ public static CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<?, ?> builder() {
+ return new CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl();
}
}
} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/DelegateAlreadyImplemented.java b/test/transform/resource/after-delombok/DelegateAlreadyImplemented.java
new file mode 100644
index 00000000..c876d8ce
--- /dev/null
+++ b/test/transform/resource/after-delombok/DelegateAlreadyImplemented.java
@@ -0,0 +1,43 @@
+public class DelegateAlreadyImplemented<T> {
+ private A<Integer, T> a;
+
+ public void a() {
+ }
+
+ public void b(java.util.List<String> l) {
+ }
+
+ public void c(java.util.List<Integer> l, String[] a, Integer... varargs) {
+ }
+
+ public void d(String[][][][] d) {
+ }
+
+ public <Y> void e(Y x) {
+ }
+
+ @SuppressWarnings("unchecked")
+ public void f(T s, java.util.List<T> l, T[] a, T... varargs) {
+ }
+
+ public void g(Number g) {
+ }
+}
+
+interface A<T, T2> {
+ void a();
+
+ void b(java.util.List<T> l);
+
+ @SuppressWarnings("unchecked")
+ void c(java.util.List<T> l, String[] a, T... varargs);
+
+ void d(String[][][][] d);
+
+ <X> X e(X x);
+
+ @SuppressWarnings("unchecked")
+ void f(T2 s, java.util.List<T2> l, T2[] a, T2... varargs);
+
+ <G extends Number> void g(G g);
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/DelegateGenerics.java b/test/transform/resource/after-delombok/DelegateGenerics.java
new file mode 100644
index 00000000..894776ea
--- /dev/null
+++ b/test/transform/resource/after-delombok/DelegateGenerics.java
@@ -0,0 +1,32 @@
+public class DelegateGenerics<T> {
+ I1<T> target;
+
+ @java.lang.SuppressWarnings("all")
+ public java.lang.Integer t(final java.lang.Integer t) {
+ return this.target.t(t);
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public java.lang.String i(final java.lang.String a) {
+ return this.target.i(a);
+ }
+
+ @java.lang.SuppressWarnings("all")
+ public T a(final T a) {
+ return this.target.a(a);
+ }
+}
+
+interface I1<T> extends I2<T, Integer, String> {
+}
+
+interface I2<A, T, I> extends I3<Integer, I, A> {
+}
+
+interface I3<T, I, A> {
+ T t(T t);
+
+ I i(I a);
+
+ A a(A a);
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/DelegateWithVarargs2.java b/test/transform/resource/after-delombok/DelegateWithVarargs2.java
new file mode 100644
index 00000000..a8ff6e3b
--- /dev/null
+++ b/test/transform/resource/after-delombok/DelegateWithVarargs2.java
@@ -0,0 +1,12 @@
+class DelegateWithVarargs2 {
+ private DelegateWithVarargs2.B bar;
+ public class B {
+ public void varargs(Object[]... keys) {
+ }
+ }
+ @java.lang.SuppressWarnings("all")
+ public void varargs(final java.lang.Object[]... keys) {
+ this.bar.varargs(keys);
+ }
+}
+
diff --git a/test/transform/resource/after-delombok/EqualsAndHashCodeRank.java b/test/transform/resource/after-delombok/EqualsAndHashCodeRank.java
new file mode 100644
index 00000000..fcf371b6
--- /dev/null
+++ b/test/transform/resource/after-delombok/EqualsAndHashCodeRank.java
@@ -0,0 +1,31 @@
+public class EqualsAndHashCodeRank {
+ int a;
+ int b;
+ int c;
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public boolean equals(final java.lang.Object o) {
+ if (o == this) return true;
+ if (!(o instanceof EqualsAndHashCodeRank)) return false;
+ final EqualsAndHashCodeRank other = (EqualsAndHashCodeRank) o;
+ if (!other.canEqual((java.lang.Object) this)) return false;
+ if (this.a != other.a) return false;
+ if (this.c != other.c) return false;
+ if (this.b != other.b) return false;
+ return true;
+ }
+ @java.lang.SuppressWarnings("all")
+ protected boolean canEqual(final java.lang.Object other) {
+ return other instanceof EqualsAndHashCodeRank;
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = result * PRIME + this.a;
+ result = result * PRIME + this.c;
+ result = result * PRIME + this.b;
+ return result;
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/GetterLazyArguments.java b/test/transform/resource/after-delombok/GetterLazyArguments.java
new file mode 100644
index 00000000..a8a422c0
--- /dev/null
+++ b/test/transform/resource/after-delombok/GetterLazyArguments.java
@@ -0,0 +1,101 @@
+class GetterLazyArguments {
+ static String fun() {
+ return null;
+ }
+
+ static String stringInt(String arg1, Integer arg2) {
+ return null;
+ }
+
+ static String stringRunnable(String arg1, Runnable arg2) {
+ return null;
+ }
+
+ private final java.util.concurrent.atomic.AtomicReference<java.lang.Object> field1 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+ private final java.util.concurrent.atomic.AtomicReference<java.lang.Object> field2 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+ private final java.util.concurrent.atomic.AtomicReference<java.lang.Object> field3 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+ private final java.util.concurrent.atomic.AtomicReference<java.lang.Object> field4 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+ private final java.util.concurrent.atomic.AtomicReference<java.lang.Object> field5 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+
+ @java.lang.SuppressWarnings({"all", "unchecked"})
+ public String getField1() {
+ java.lang.Object value = this.field1.get();
+ if (value == null) {
+ synchronized (this.field1) {
+ value = this.field1.get();
+ if (value == null) {
+ final String actualValue = stringInt(("a"), (1));
+ value = actualValue == null ? this.field1 : actualValue;
+ this.field1.set(value);
+ }
+ }
+ }
+ return (String) (value == this.field1 ? null : value);
+ }
+
+ @java.lang.SuppressWarnings({"all", "unchecked"})
+ public String getField2() {
+ java.lang.Object value = this.field2.get();
+ if (value == null) {
+ synchronized (this.field2) {
+ value = this.field2.get();
+ if (value == null) {
+ final String actualValue = stringInt(true ? "a" : "b", true ? 1 : 0);
+ value = actualValue == null ? this.field2 : actualValue;
+ this.field2.set(value);
+ }
+ }
+ }
+ return (String) (value == this.field2 ? null : value);
+ }
+
+ @java.lang.SuppressWarnings({"all", "unchecked"})
+ public String getField3() {
+ java.lang.Object value = this.field3.get();
+ if (value == null) {
+ synchronized (this.field3) {
+ value = this.field3.get();
+ if (value == null) {
+ final String actualValue = stringInt(("a"), true ? 1 : 0);
+ value = actualValue == null ? this.field3 : actualValue;
+ this.field3.set(value);
+ }
+ }
+ }
+ return (String) (value == this.field3 ? null : value);
+ }
+
+ @java.lang.SuppressWarnings({"all", "unchecked"})
+ public String getField4() {
+ java.lang.Object value = this.field4.get();
+ if (value == null) {
+ synchronized (this.field4) {
+ value = this.field4.get();
+ if (value == null) {
+ final String actualValue = stringRunnable(fun(), () -> {
+ });
+ value = actualValue == null ? this.field4 : actualValue;
+ this.field4.set(value);
+ }
+ }
+ }
+ return (String) (value == this.field4 ? null : value);
+ }
+
+ @java.lang.SuppressWarnings({"all", "unchecked"})
+ public String getField5() {
+ java.lang.Object value = this.field5.get();
+ if (value == null) {
+ synchronized (this.field5) {
+ value = this.field5.get();
+ if (value == null) {
+ final String actualValue = stringRunnable(("a"), () -> {
+ });
+ value = actualValue == null ? this.field5 : actualValue;
+ this.field5.set(value);
+ }
+ }
+ }
+ return (String) (value == this.field5 ? null : value);
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/GetterSetterJavadoc.java b/test/transform/resource/after-delombok/GetterSetterJavadoc.java
index ae662da7..78d120a4 100644
--- a/test/transform/resource/after-delombok/GetterSetterJavadoc.java
+++ b/test/transform/resource/after-delombok/GetterSetterJavadoc.java
@@ -115,7 +115,7 @@ class GetterSetterJavadoc4 {
/**
* Some text
*
- * @param fieldName Hello, World5
+ * @param fieldName Hello, World4
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
diff --git a/test/transform/resource/after-delombok/JacksonBuilderSingular.java b/test/transform/resource/after-delombok/JacksonBuilderSingular.java
new file mode 100644
index 00000000..feaa6832
--- /dev/null
+++ b/test/transform/resource/after-delombok/JacksonBuilderSingular.java
@@ -0,0 +1,177 @@
+import java.util.List;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonBuilderSingular.JacksonBuilderSingularBuilder.class)
+public class JacksonBuilderSingular {
+ @JsonAnySetter
+ private Map<String, Object> any;
+ @JsonProperty("v_a_l_u_e_s")
+ private List<String> values;
+ @JsonAnySetter
+ private ImmutableMap<String, Object> guavaAny;
+ @JsonProperty("guava_v_a_l_u_e_s")
+ private ImmutableList<String> guavaValues;
+ @java.lang.SuppressWarnings("all")
+ JacksonBuilderSingular(final Map<String, Object> any, final List<String> values, final ImmutableMap<String, Object> guavaAny, final ImmutableList<String> guavaValues) {
+ this.any = any;
+ this.values = values;
+ this.guavaAny = guavaAny;
+ this.guavaValues = guavaValues;
+ }
+ @java.lang.SuppressWarnings("all")
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "", buildMethodName = "build")
+ public static class JacksonBuilderSingularBuilder {
+ @java.lang.SuppressWarnings("all")
+ private java.util.ArrayList<String> any$key;
+ @java.lang.SuppressWarnings("all")
+ private java.util.ArrayList<Object> any$value;
+ @java.lang.SuppressWarnings("all")
+ private java.util.ArrayList<String> values;
+ @java.lang.SuppressWarnings("all")
+ private com.google.common.collect.ImmutableMap.Builder<String, Object> guavaAny;
+ @java.lang.SuppressWarnings("all")
+ private com.google.common.collect.ImmutableList.Builder<String> guavaValues;
+ @java.lang.SuppressWarnings("all")
+ JacksonBuilderSingularBuilder() {
+ }
+ @JsonAnySetter
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder any(final String anyKey, final Object anyValue) {
+ if (this.any$key == null) {
+ this.any$key = new java.util.ArrayList<String>();
+ this.any$value = new java.util.ArrayList<Object>();
+ }
+ this.any$key.add(anyKey);
+ this.any$value.add(anyValue);
+ return this;
+ }
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder any(final java.util.Map<? extends String, ? extends Object> any) {
+ if (any == null) {
+ throw new java.lang.NullPointerException("any cannot be null");
+ }
+ if (this.any$key == null) {
+ this.any$key = new java.util.ArrayList<String>();
+ this.any$value = new java.util.ArrayList<Object>();
+ }
+ for (final java.util.Map.Entry<? extends String, ? extends Object> $lombokEntry : any.entrySet()) {
+ this.any$key.add($lombokEntry.getKey());
+ this.any$value.add($lombokEntry.getValue());
+ }
+ return this;
+ }
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder clearAny() {
+ if (this.any$key != null) {
+ this.any$key.clear();
+ this.any$value.clear();
+ }
+ return this;
+ }
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder value(final String value) {
+ if (this.values == null) this.values = new java.util.ArrayList<String>();
+ this.values.add(value);
+ return this;
+ }
+ @JsonProperty("v_a_l_u_e_s")
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder values(final java.util.Collection<? extends String> values) {
+ if (values == null) {
+ throw new java.lang.NullPointerException("values cannot be null");
+ }
+ if (this.values == null) this.values = new java.util.ArrayList<String>();
+ this.values.addAll(values);
+ return this;
+ }
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder clearValues() {
+ if (this.values != null) this.values.clear();
+ return this;
+ }
+ @JsonAnySetter
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder guavaAny(final String key, final Object value) {
+ if (this.guavaAny == null) this.guavaAny = com.google.common.collect.ImmutableMap.builder();
+ this.guavaAny.put(key, value);
+ return this;
+ }
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder guavaAny(final java.util.Map<? extends String, ? extends Object> guavaAny) {
+ if (guavaAny == null) {
+ throw new java.lang.NullPointerException("guavaAny cannot be null");
+ }
+ if (this.guavaAny == null) this.guavaAny = com.google.common.collect.ImmutableMap.builder();
+ this.guavaAny.putAll(guavaAny);
+ return this;
+ }
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder clearGuavaAny() {
+ this.guavaAny = null;
+ return this;
+ }
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder guavaValue(final String guavaValue) {
+ if (this.guavaValues == null) this.guavaValues = com.google.common.collect.ImmutableList.builder();
+ this.guavaValues.add(guavaValue);
+ return this;
+ }
+ @JsonProperty("guava_v_a_l_u_e_s")
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder guavaValues(final java.lang.Iterable<? extends String> guavaValues) {
+ if (guavaValues == null) {
+ throw new java.lang.NullPointerException("guavaValues cannot be null");
+ }
+ if (this.guavaValues == null) this.guavaValues = com.google.common.collect.ImmutableList.builder();
+ this.guavaValues.addAll(guavaValues);
+ return this;
+ }
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular.JacksonBuilderSingularBuilder clearGuavaValues() {
+ this.guavaValues = null;
+ return this;
+ }
+ @java.lang.SuppressWarnings("all")
+ public JacksonBuilderSingular build() {
+ java.util.Map<String, Object> any;
+ switch (this.any$key == null ? 0 : this.any$key.size()) {
+ case 0:
+ any = java.util.Collections.emptyMap();
+ break;
+ case 1:
+ any = java.util.Collections.singletonMap(this.any$key.get(0), this.any$value.get(0));
+ break;
+ default:
+ any = new java.util.LinkedHashMap<String, Object>(this.any$key.size() < 1073741824 ? 1 + this.any$key.size() + (this.any$key.size() - 3) / 3 : java.lang.Integer.MAX_VALUE);
+ for (int $i = 0; $i < this.any$key.size(); $i++) any.put(this.any$key.get($i), (Object) this.any$value.get($i));
+ any = java.util.Collections.unmodifiableMap(any);
+ }
+ java.util.List<String> values;
+ switch (this.values == null ? 0 : this.values.size()) {
+ case 0:
+ values = java.util.Collections.emptyList();
+ break;
+ case 1:
+ values = java.util.Collections.singletonList(this.values.get(0));
+ break;
+ default:
+ values = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(this.values));
+ }
+ com.google.common.collect.ImmutableMap<String, Object> guavaAny = this.guavaAny == null ? com.google.common.collect.ImmutableMap.<String, Object>of() : this.guavaAny.build();
+ com.google.common.collect.ImmutableList<String> guavaValues = this.guavaValues == null ? com.google.common.collect.ImmutableList.<String>of() : this.guavaValues.build();
+ return new JacksonBuilderSingular(any, values, guavaAny, guavaValues);
+ }
+ @java.lang.Override
+ @java.lang.SuppressWarnings("all")
+ public java.lang.String toString() {
+ return "JacksonBuilderSingular.JacksonBuilderSingularBuilder(any$key=" + this.any$key + ", any$value=" + this.any$value + ", values=" + this.values + ", guavaAny=" + this.guavaAny + ", guavaValues=" + this.guavaValues + ")";
+ }
+ }
+ @java.lang.SuppressWarnings("all")
+ public static JacksonBuilderSingular.JacksonBuilderSingularBuilder builder() {
+ return new JacksonBuilderSingular.JacksonBuilderSingularBuilder();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/LoggerCommons.java b/test/transform/resource/after-delombok/LoggerCommons.java
index 954e730b..4b943da7 100644
--- a/test/transform/resource/after-delombok/LoggerCommons.java
+++ b/test/transform/resource/after-delombok/LoggerCommons.java
@@ -10,3 +10,8 @@ class LoggerCommonsWithDifferentName {
@java.lang.SuppressWarnings("all")
private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog("DifferentName");
}
+class LoggerCommonsWithStaticField {
+ @java.lang.SuppressWarnings("all")
+ private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LoggerCommonsWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/LoggerCustomWithTopicAndName.java b/test/transform/resource/after-delombok/LoggerCustomWithTopicAndName.java
index abb785b9..4db02cc1 100644
--- a/test/transform/resource/after-delombok/LoggerCustomWithTopicAndName.java
+++ b/test/transform/resource/after-delombok/LoggerCustomWithTopicAndName.java
@@ -3,6 +3,12 @@ class LoggerCustomLog {
private static final MyLoggerFactory log = MyLoggerFactory.create(LoggerCustomLog.class.getName(), "t", null, LoggerCustomLog.class, "t");
}
+class LoggerCustomLogWithStaticField {
+ @java.lang.SuppressWarnings("all")
+ private static final MyLoggerFactory log = MyLoggerFactory.create(LoggerCustomLogWithStaticField.class.getName(), LoggerCustomLogWithStaticField.TOPIC, null, LoggerCustomLogWithStaticField.class, LoggerCustomLogWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+}
+
class MyLoggerFactory {
static MyLoggerFactory create(String name, String t1, Object o, Class<?> clazz, String t2) {
return null;
diff --git a/test/transform/resource/after-delombok/LoggerJBossLog.java b/test/transform/resource/after-delombok/LoggerJBossLog.java
index 41c18805..5fd98aa6 100644
--- a/test/transform/resource/after-delombok/LoggerJBossLog.java
+++ b/test/transform/resource/after-delombok/LoggerJBossLog.java
@@ -17,3 +17,9 @@ class LoggerJBossLogWithDifferentLoggerName {
@java.lang.SuppressWarnings("all")
private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger("DifferentLogger");
}
+
+class LoggerJBossLogWithStaticField {
+ @java.lang.SuppressWarnings("all")
+ private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LoggerJBossLogWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/LoggerJul.java b/test/transform/resource/after-delombok/LoggerJul.java
index 63f96733..cfb44fde 100644
--- a/test/transform/resource/after-delombok/LoggerJul.java
+++ b/test/transform/resource/after-delombok/LoggerJul.java
@@ -10,3 +10,8 @@ class LoggerJulWithDifferentName {
@java.lang.SuppressWarnings("all")
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger("DifferentName");
}
+class LoggerJulWithStaticField {
+ @java.lang.SuppressWarnings("all")
+ private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LoggerJulWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/LoggerLog4j.java b/test/transform/resource/after-delombok/LoggerLog4j.java
index 7d9d4409..cef83621 100644
--- a/test/transform/resource/after-delombok/LoggerLog4j.java
+++ b/test/transform/resource/after-delombok/LoggerLog4j.java
@@ -10,3 +10,8 @@ class LoggerLog4jWithDifferentName {
@java.lang.SuppressWarnings("all")
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger("DifferentName");
}
+class LoggerLog4jWithStaticField {
+ @java.lang.SuppressWarnings("all")
+ private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LoggerLog4jWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+}
diff --git a/test/transform/resource/after-delombok/LoggerLog4j2.java b/test/transform/resource/after-delombok/LoggerLog4j2.java
index 3d8b7b5b..b32c7722 100644
--- a/test/transform/resource/after-delombok/LoggerLog4j2.java
+++ b/test/transform/resource/after-delombok/LoggerLog4j2.java
@@ -10,3 +10,8 @@ class LoggerLog4j2WithDifferentName {
@java.lang.SuppressWarnings("all")
private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger("DifferentName");
}
+class LoggerLog4j2WithStaticField {
+ @java.lang.SuppressWarnings("all")
+ private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LoggerLog4j2WithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/LoggerSlf4j.java b/test/transform/resource/after-delombok/LoggerSlf4j.java
index 68d685f0..70f11ae4 100644
--- a/test/transform/resource/after-delombok/LoggerSlf4j.java
+++ b/test/transform/resource/after-delombok/LoggerSlf4j.java
@@ -17,3 +17,20 @@ class LoggerSlf4jWithDifferentLoggerName {
@java.lang.SuppressWarnings("all")
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger("DifferentLogger");
}
+
+class LoggerSlf4jWithStaticField {
+ @java.lang.SuppressWarnings("all")
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+}
+
+class LoggerSlf4jWithTwoStaticFields {
+ @java.lang.SuppressWarnings("all")
+ 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
new file mode 100644
index 00000000..86e6ae2c
--- /dev/null
+++ b/test/transform/resource/after-delombok/LoggerSlf4jInvalidTopic.java
@@ -0,0 +1,5 @@
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j(topic = 42)
+class LoggerSlf4jWithIntegerTopic {
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/LoggerXSlf4j.java b/test/transform/resource/after-delombok/LoggerXSlf4j.java
index 781733cf..ba0ec3f8 100644
--- a/test/transform/resource/after-delombok/LoggerXSlf4j.java
+++ b/test/transform/resource/after-delombok/LoggerXSlf4j.java
@@ -10,3 +10,8 @@ class LoggerXSlf4jWithDifferentName {
@java.lang.SuppressWarnings("all")
private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger("DifferentName");
}
+class LoggerXSlf4jWithStaticField {
+ @java.lang.SuppressWarnings("all")
+ private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LoggerXSlf4jWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/SkipSuppressWarnings.java b/test/transform/resource/after-delombok/SkipSuppressWarnings.java
new file mode 100644
index 00000000..151d4e17
--- /dev/null
+++ b/test/transform/resource/after-delombok/SkipSuppressWarnings.java
@@ -0,0 +1,24 @@
+class SkipSuppressWarnings {
+ private String field = "";
+ private final java.util.concurrent.atomic.AtomicReference<java.lang.Object> field2 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+
+ public String getField() {
+ return this.field;
+ }
+
+ @java.lang.SuppressWarnings({"unchecked"})
+ public String getField2() {
+ java.lang.Object value = this.field2.get();
+ if (value == null) {
+ synchronized (this.field2) {
+ value = this.field2.get();
+ if (value == null) {
+ final String actualValue = "";
+ value = actualValue == null ? this.field2 : actualValue;
+ this.field2.set(value);
+ }
+ }
+ }
+ return (String) (value == this.field2 ? null : value);
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-delombok/SuperBuilderBasic.java b/test/transform/resource/after-delombok/SuperBuilderBasic.java
index c347e41c..c3fa86f2 100644
--- a/test/transform/resource/after-delombok/SuperBuilderBasic.java
+++ b/test/transform/resource/after-delombok/SuperBuilderBasic.java
@@ -81,10 +81,10 @@ public class SuperBuilderBasic {
return new SuperBuilderBasic.Parent.ParentBuilderImpl();
}
}
- public static class Child extends Parent {
+ 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 Parent.ParentBuilder<C, B> {
+ 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
diff --git a/test/transform/resource/after-delombok/SuperBuilderCustomized.java b/test/transform/resource/after-delombok/SuperBuilderCustomized.java
index bffa72fa..f66133c9 100644
--- a/test/transform/resource/after-delombok/SuperBuilderCustomized.java
+++ b/test/transform/resource/after-delombok/SuperBuilderCustomized.java
@@ -23,6 +23,13 @@ public class SuperBuilderCustomized {
}
}
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")
@@ -39,14 +46,6 @@ public class SuperBuilderCustomized {
return new SuperBuilderCustomized.Parent(this);
}
}
- @java.lang.SuppressWarnings("all")
- protected Parent(final SuperBuilderCustomized.Parent.ParentBuilder<?, ?> b) {
- this.field1 = b.field1;
- }
- @java.lang.SuppressWarnings("all")
- public static SuperBuilderCustomized.Parent.ParentBuilder<?, ?> builder() {
- return new SuperBuilderCustomized.Parent.ParentBuilderImpl();
- }
}
public static class Child extends Parent {
private static final class ChildBuilderImpl extends ChildBuilder<Child, ChildBuilderImpl> {
diff --git a/test/transform/resource/after-delombok/TypeUseAnnotations.java b/test/transform/resource/after-delombok/TypeUseAnnotations.java
index 1e1536bf..fbf32577 100644
--- a/test/transform/resource/after-delombok/TypeUseAnnotations.java
+++ b/test/transform/resource/after-delombok/TypeUseAnnotations.java
@@ -7,8 +7,18 @@ import java.util.List;
}
class TypeUseAnnotations {
List<@TA(x = 5) String> foo;
+ List<TypeUseAnnotations.@TA(x = 5) Inner> bar;
+
+ class Inner {
+ }
+
@java.lang.SuppressWarnings("all")
public List<@TA(x = 5) String> getFoo() {
return this.foo;
}
+
+ @java.lang.SuppressWarnings("all")
+ public List<TypeUseAnnotations.@TA(x = 5) Inner> getBar() {
+ return this.bar;
+ }
}
diff --git a/test/transform/resource/after-delombok/ValLambda.java b/test/transform/resource/after-delombok/ValLambda.java
index 24ae3b5f..910e3506 100644
--- a/test/transform/resource/after-delombok/ValLambda.java
+++ b/test/transform/resource/after-delombok/ValLambda.java
@@ -1,4 +1,6 @@
// version 8:
+import java.io.Serializable;
+
class ValLambda {
static {
final java.lang.Runnable foo = (System.currentTimeMillis() > 0) ? (Runnable) () -> {
@@ -15,8 +17,8 @@ class ValLambda {
};
}
- public void easyIntersectionLambda() {
- final java.lang.Runnable foo = (Runnable & java.io.Serializable) () -> {
+ public void intersectionLambda() {
+ final java.io.Serializable foo = (Runnable & Serializable) () -> {
};
final java.io.Serializable bar = (java.io.Serializable & Runnable) () -> {
};
diff --git a/test/transform/resource/after-delombok/ValueStaticConstructorOf.java b/test/transform/resource/after-delombok/ValueStaticConstructorOf.java
index fe75f823..e4564628 100644
--- a/test/transform/resource/after-delombok/ValueStaticConstructorOf.java
+++ b/test/transform/resource/after-delombok/ValueStaticConstructorOf.java
@@ -23,12 +23,12 @@ public final class ValueStaticConstructorOf {
if (o == this) return true;
if (!(o instanceof ValueStaticConstructorOf)) return false;
final ValueStaticConstructorOf other = (ValueStaticConstructorOf) o;
- final java.lang.Object this$name = this.getName();
- final java.lang.Object other$name = other.getName();
- if (this$name == null ? other$name != null : !this$name.equals(other$name)) return false;
final java.lang.Object this$price = this.getPrice();
final java.lang.Object other$price = other.getPrice();
if (this$price == null ? other$price != null : !this$price.equals(other$price)) return false;
+ final java.lang.Object this$name = this.getName();
+ final java.lang.Object other$name = other.getName();
+ if (this$name == null ? other$name != null : !this$name.equals(other$name)) return false;
return true;
}
@java.lang.Override
@@ -36,10 +36,10 @@ public final class ValueStaticConstructorOf {
public int hashCode() {
final int PRIME = 59;
int result = 1;
- final java.lang.Object $name = this.getName();
- result = result * PRIME + ($name == null ? 43 : $name.hashCode());
final java.lang.Object $price = this.getPrice();
result = result * PRIME + ($price == null ? 43 : $price.hashCode());
+ final java.lang.Object $name = this.getName();
+ result = result * PRIME + ($name == null ? 43 : $name.hashCode());
return result;
}
@java.lang.Override
diff --git a/test/transform/resource/after-ecj/BuilderConstructorJavadoc.java b/test/transform/resource/after-ecj/BuilderConstructorJavadoc.java
new file mode 100644
index 00000000..bb3916e8
--- /dev/null
+++ b/test/transform/resource/after-ecj/BuilderConstructorJavadoc.java
@@ -0,0 +1,40 @@
+import java.util.List;
+class BuilderConstructorJavadoc<T> {
+ public static class BuilderConstructorJavadocBuilder<T> {
+ private @java.lang.SuppressWarnings("all") int basic;
+ private @java.lang.SuppressWarnings("all") int multiline;
+ private @java.lang.SuppressWarnings("all") int predef;
+ private @java.lang.SuppressWarnings("all") int predefWithJavadoc;
+ public BuilderConstructorJavadocBuilder<T> predef(final int x) {
+ this.predef = x;
+ return this;
+ }
+ public BuilderConstructorJavadocBuilder<T> predefWithJavadoc(final int x) {
+ this.predefWithJavadoc = x;
+ return this;
+ }
+ @java.lang.SuppressWarnings("all") BuilderConstructorJavadocBuilder() {
+ super();
+ }
+ public @java.lang.SuppressWarnings("all") BuilderConstructorJavadoc.BuilderConstructorJavadocBuilder<T> basic(final int basic) {
+ this.basic = basic;
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderConstructorJavadoc.BuilderConstructorJavadocBuilder<T> multiline(final int multiline) {
+ this.multiline = multiline;
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") BuilderConstructorJavadoc<T> build() {
+ return new BuilderConstructorJavadoc<T>(this.basic, this.multiline, this.predef, this.predefWithJavadoc);
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
+ return (((((((("BuilderConstructorJavadoc.BuilderConstructorJavadocBuilder(basic=" + this.basic) + ", multiline=") + this.multiline) + ", predef=") + this.predef) + ", predefWithJavadoc=") + this.predefWithJavadoc) + ")");
+ }
+ }
+ @lombok.Builder BuilderConstructorJavadoc(int basic, int multiline, int predef, int predefWithJavadoc) {
+ super();
+ }
+ public static @java.lang.SuppressWarnings("all") <T>BuilderConstructorJavadoc.BuilderConstructorJavadocBuilder<T> builder() {
+ return new BuilderConstructorJavadoc.BuilderConstructorJavadocBuilder<T>();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/BuilderDefaults.java b/test/transform/resource/after-ecj/BuilderDefaults.java
index 46f55bef..c9be219d 100644
--- a/test/transform/resource/after-ecj/BuilderDefaults.java
+++ b/test/transform/resource/after-ecj/BuilderDefaults.java
@@ -72,25 +72,25 @@ public final @Value @Builder class BuilderDefaults {
final BuilderDefaults other = (BuilderDefaults) o;
if ((this.getX() != other.getX()))
return false;
+ if ((this.getZ() != other.getZ()))
+ return false;
final java.lang.Object this$name = this.getName();
final java.lang.Object other$name = other.getName();
if (((this$name == null) ? (other$name != null) : (! this$name.equals(other$name))))
return false;
- if ((this.getZ() != other.getZ()))
- return false;
return true;
}
public @java.lang.Override @java.lang.SuppressWarnings("all") int hashCode() {
final int PRIME = 59;
int result = 1;
result = ((result * PRIME) + this.getX());
- final java.lang.Object $name = this.getName();
- result = ((result * PRIME) + (($name == null) ? 43 : $name.hashCode()));
final long $z = this.getZ();
result = ((result * PRIME) + (int) ($z ^ ($z >>> 32)));
+ final java.lang.Object $name = this.getName();
+ result = ((result * PRIME) + (($name == null) ? 43 : $name.hashCode()));
return result;
}
public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
return (((((("BuilderDefaults(x=" + this.getX()) + ", name=") + this.getName()) + ", z=") + this.getZ()) + ")");
}
-}
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/CheckerFrameworkSuperBuilder.java b/test/transform/resource/after-ecj/CheckerFrameworkSuperBuilder.java
index 5bd4e1b3..7c8ff0ed 100644
--- a/test/transform/resource/after-ecj/CheckerFrameworkSuperBuilder.java
+++ b/test/transform/resource/after-ecj/CheckerFrameworkSuperBuilder.java
@@ -9,6 +9,7 @@ class CheckerFrameworkSuperBuilder {
private @java.lang.SuppressWarnings("all") int z;
private @java.lang.SuppressWarnings("all") java.util.ArrayList<String> names;
public ParentBuilder() {
+ super();
}
protected abstract @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") B self();
public abstract @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") C build(final @org.checkerframework.checker.builder.qual.CalledMethods({"y", "z"}) CheckerFrameworkSuperBuilder.Parent.ParentBuilder this);
@@ -52,6 +53,7 @@ class CheckerFrameworkSuperBuilder {
}
private static final @java.lang.SuppressWarnings("all") class ParentBuilderImpl extends CheckerFrameworkSuperBuilder.Parent.ParentBuilder<CheckerFrameworkSuperBuilder.Parent, CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl> {
private ParentBuilderImpl() {
+ super();
}
protected @java.lang.Override @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl self() {
return this;
@@ -92,36 +94,38 @@ class CheckerFrameworkSuperBuilder {
return new CheckerFrameworkSuperBuilder.Parent.ParentBuilderImpl();
}
}
- public static @lombok.experimental.SuperBuilder class Child extends Parent {
- public static abstract @java.lang.SuppressWarnings("all") class ChildBuilder<C extends CheckerFrameworkSuperBuilder.Child, B extends CheckerFrameworkSuperBuilder.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> {
+ public static @lombok.experimental.SuperBuilder class ZChild extends Parent {
+ public static abstract @java.lang.SuppressWarnings("all") class ZChildBuilder<C extends CheckerFrameworkSuperBuilder.ZChild, B extends CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> {
private @java.lang.SuppressWarnings("all") int a$value;
private @java.lang.SuppressWarnings("all") boolean a$set;
private @java.lang.SuppressWarnings("all") int b;
- public ChildBuilder() {
+ public ZChildBuilder() {
+ super();
}
protected abstract @java.lang.Override @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") B self();
- public abstract @java.lang.Override @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") C build(final @org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.Child.ChildBuilder this);
- public @org.checkerframework.checker.builder.qual.ReturnsReceiver @java.lang.SuppressWarnings("all") B a(final @org.checkerframework.checker.builder.qual.NotCalledMethods("a") CheckerFrameworkSuperBuilder.Child.ChildBuilder this, final int a) {
+ public abstract @java.lang.Override @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") C build(final @org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder this);
+ public @org.checkerframework.checker.builder.qual.ReturnsReceiver @java.lang.SuppressWarnings("all") B a(final @org.checkerframework.checker.builder.qual.NotCalledMethods("a") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder this, final int a) {
this.a$value = a;
a$set = true;
return self();
}
- public @org.checkerframework.checker.builder.qual.ReturnsReceiver @java.lang.SuppressWarnings("all") B b(final @org.checkerframework.checker.builder.qual.NotCalledMethods("b") CheckerFrameworkSuperBuilder.Child.ChildBuilder this, final int b) {
+ public @org.checkerframework.checker.builder.qual.ReturnsReceiver @java.lang.SuppressWarnings("all") B b(final @org.checkerframework.checker.builder.qual.NotCalledMethods("b") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder this, final int b) {
this.b = b;
return self();
}
public @java.lang.Override @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") java.lang.String toString() {
- return (((((("CheckerFrameworkSuperBuilder.Child.ChildBuilder(super=" + super.toString()) + ", a$value=") + this.a$value) + ", b=") + this.b) + ")");
+ return (((((("CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder(super=" + super.toString()) + ", a$value=") + this.a$value) + ", b=") + this.b) + ")");
}
}
- private static final @java.lang.SuppressWarnings("all") class ChildBuilderImpl extends CheckerFrameworkSuperBuilder.Child.ChildBuilder<CheckerFrameworkSuperBuilder.Child, CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl> {
- private ChildBuilderImpl() {
+ private static final @java.lang.SuppressWarnings("all") class ZChildBuilderImpl extends CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<CheckerFrameworkSuperBuilder.ZChild, CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl> {
+ private ZChildBuilderImpl() {
+ super();
}
- protected @java.lang.Override @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl self() {
+ protected @java.lang.Override @org.checkerframework.checker.builder.qual.ReturnsReceiver @org.checkerframework.dataflow.qual.Pure @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl self() {
return this;
}
- public @java.lang.Override @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.Child build(final @org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl this) {
- return new CheckerFrameworkSuperBuilder.Child(this);
+ public @java.lang.Override @org.checkerframework.dataflow.qual.SideEffectFree @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.ZChild build(final @org.checkerframework.checker.builder.qual.CalledMethods("b") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl this) {
+ return new CheckerFrameworkSuperBuilder.ZChild(this);
}
}
@lombok.Builder.Default int a;
@@ -129,18 +133,19 @@ class CheckerFrameworkSuperBuilder {
private static @java.lang.SuppressWarnings("all") int $default$a() {
return 1;
}
- protected @org.checkerframework.common.aliasing.qual.Unique @java.lang.SuppressWarnings("all") Child(final CheckerFrameworkSuperBuilder.Child.ChildBuilder<?, ?> b) {
+ protected @org.checkerframework.common.aliasing.qual.Unique @java.lang.SuppressWarnings("all") ZChild(final CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<?, ?> b) {
super(b);
if (b.a$set)
this.a = b.a$value;
else
- this.a = CheckerFrameworkSuperBuilder.Child.$default$a();
+ this.a = CheckerFrameworkSuperBuilder.ZChild.$default$a();
this.b = b.b;
}
- public static @org.checkerframework.common.aliasing.qual.Unique @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.Child.ChildBuilder<?, ?> builder() {
- return new CheckerFrameworkSuperBuilder.Child.ChildBuilderImpl();
+ public static @org.checkerframework.common.aliasing.qual.Unique @java.lang.SuppressWarnings("all") CheckerFrameworkSuperBuilder.ZChild.ZChildBuilder<?, ?> builder() {
+ return new CheckerFrameworkSuperBuilder.ZChild.ZChildBuilderImpl();
}
}
CheckerFrameworkSuperBuilder() {
+ super();
}
}
diff --git a/test/transform/resource/after-ecj/DelegateAlreadyImplemented.java b/test/transform/resource/after-ecj/DelegateAlreadyImplemented.java
new file mode 100644
index 00000000..1e12f405
--- /dev/null
+++ b/test/transform/resource/after-ecj/DelegateAlreadyImplemented.java
@@ -0,0 +1,29 @@
+public class DelegateAlreadyImplemented<T> {
+ private @lombok.experimental.Delegate A<Integer, T> a;
+ public DelegateAlreadyImplemented() {
+ super();
+ }
+ public void a() {
+ }
+ public void b(java.util.List<String> l) {
+ }
+ public void c(java.util.List<Integer> l, String[] a, Integer... varargs) {
+ }
+ public void d(String[][][][] d) {
+ }
+ public <Y>void e(Y x) {
+ }
+ public @SuppressWarnings("unchecked") void f(T s, java.util.List<T> l, T[] a, T... varargs) {
+ }
+ public void g(Number g) {
+ }
+}
+interface A<T, T2> {
+ public void a();
+ public void b(java.util.List<T> l);
+ public @SuppressWarnings("unchecked") void c(java.util.List<T> l, String[] a, T... varargs);
+ public void d(String[][][][] d);
+ public <X>X e(X x);
+ public @SuppressWarnings("unchecked") void f(T2 s, java.util.List<T2> l, T2[] a, T2... varargs);
+ public <G extends Number>void g(G g);
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/DelegateGenerics.java b/test/transform/resource/after-ecj/DelegateGenerics.java
new file mode 100644
index 00000000..97b05102
--- /dev/null
+++ b/test/transform/resource/after-ecj/DelegateGenerics.java
@@ -0,0 +1,24 @@
+public class DelegateGenerics<T> {
+ @lombok.experimental.Delegate I1<T> target;
+ public DelegateGenerics() {
+ super();
+ }
+ public @java.lang.SuppressWarnings("all") T a(final T a) {
+ return this.target.a(a);
+ }
+ public @java.lang.SuppressWarnings("all") java.lang.String i(final java.lang.String a) {
+ return this.target.i(a);
+ }
+ public @java.lang.SuppressWarnings("all") java.lang.Integer t(final java.lang.Integer t) {
+ return this.target.t(t);
+ }
+}
+interface I1<T> extends I2<T, Integer, String> {
+}
+interface I2<A, T, I> extends I3<Integer, I, A> {
+}
+interface I3<T, I, A> {
+ public T t(T t);
+ public I i(I a);
+ public A a(A a);
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/DelegateWithVarargs2.java b/test/transform/resource/after-ecj/DelegateWithVarargs2.java
new file mode 100644
index 00000000..ed0cddf5
--- /dev/null
+++ b/test/transform/resource/after-ecj/DelegateWithVarargs2.java
@@ -0,0 +1,17 @@
+import lombok.experimental.Delegate;
+class DelegateWithVarargs2 {
+ public class B {
+ public B() {
+ super();
+ }
+ public void varargs(Object[]... keys) {
+ }
+ }
+ private @Delegate DelegateWithVarargs2.B bar;
+ DelegateWithVarargs2() {
+ super();
+ }
+ public @java.lang.SuppressWarnings("all") void varargs(final java.lang.Object[]... keys) {
+ this.bar.varargs(keys);
+ }
+}
diff --git a/test/transform/resource/after-ecj/EqualsAndHashCodeAnnotated.java b/test/transform/resource/after-ecj/EqualsAndHashCodeAnnotated.java
new file mode 100644
index 00000000..4e377fb4
--- /dev/null
+++ b/test/transform/resource/after-ecj/EqualsAndHashCodeAnnotated.java
@@ -0,0 +1,53 @@
+import java.lang.annotation.*;
+@lombok.EqualsAndHashCode class EqualsAndHashCodeAnnotated {
+ @Target(ElementType.TYPE_USE) @Retention(RetentionPolicy.SOURCE) @interface Annotated {
+ }
+ @Annotated int primitive;
+ @Annotated Object object;
+ int @Annotated [] primitiveValues;
+ int @Annotated [] @Annotated [] morePrimitiveValues;
+ Integer @Annotated [] objectValues;
+ Integer @Annotated [] @Annotated [] moreObjectValues;
+ EqualsAndHashCodeAnnotated() {
+ super();
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") boolean equals(final java.lang.Object o) {
+ if ((o == this))
+ return true;
+ if ((! (o instanceof EqualsAndHashCodeAnnotated)))
+ return false;
+ final EqualsAndHashCodeAnnotated other = (EqualsAndHashCodeAnnotated) o;
+ if ((! other.canEqual((java.lang.Object) this)))
+ return false;
+ if ((this.primitive != other.primitive))
+ return false;
+ final java.lang.Object this$object = this.object;
+ final java.lang.Object other$object = other.object;
+ if (((this$object == null) ? (other$object != null) : (! this$object.equals(other$object))))
+ return false;
+ if ((! java.util.Arrays.equals(this.primitiveValues, other.primitiveValues)))
+ return false;
+ if ((! java.util.Arrays.deepEquals(this.morePrimitiveValues, other.morePrimitiveValues)))
+ return false;
+ if ((! java.util.Arrays.deepEquals(this.objectValues, other.objectValues)))
+ return false;
+ if ((! java.util.Arrays.deepEquals(this.moreObjectValues, other.moreObjectValues)))
+ return false;
+ return true;
+ }
+ protected @java.lang.SuppressWarnings("all") boolean canEqual(final java.lang.Object other) {
+ return (other instanceof EqualsAndHashCodeAnnotated);
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = ((result * PRIME) + this.primitive);
+ final java.lang.Object $object = this.object;
+ result = ((result * PRIME) + (($object == null) ? 43 : $object.hashCode()));
+ result = ((result * PRIME) + java.util.Arrays.hashCode(this.primitiveValues));
+ result = ((result * PRIME) + java.util.Arrays.deepHashCode(this.morePrimitiveValues));
+ result = ((result * PRIME) + java.util.Arrays.deepHashCode(this.objectValues));
+ result = ((result * PRIME) + java.util.Arrays.deepHashCode(this.moreObjectValues));
+ return result;
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/EqualsAndHashCodeRank.java b/test/transform/resource/after-ecj/EqualsAndHashCodeRank.java
new file mode 100644
index 00000000..ef221261
--- /dev/null
+++ b/test/transform/resource/after-ecj/EqualsAndHashCodeRank.java
@@ -0,0 +1,36 @@
+import lombok.EqualsAndHashCode;
+public @EqualsAndHashCode class EqualsAndHashCodeRank {
+ @EqualsAndHashCode.Include int a;
+ @EqualsAndHashCode.Include(rank = 10) int b;
+ @EqualsAndHashCode.Include int c;
+ public EqualsAndHashCodeRank() {
+ super();
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") boolean equals(final java.lang.Object o) {
+ if ((o == this))
+ return true;
+ if ((! (o instanceof EqualsAndHashCodeRank)))
+ return false;
+ final EqualsAndHashCodeRank other = (EqualsAndHashCodeRank) o;
+ if ((! other.canEqual((java.lang.Object) this)))
+ return false;
+ if ((this.a != other.a))
+ return false;
+ if ((this.c != other.c))
+ return false;
+ if ((this.b != other.b))
+ return false;
+ return true;
+ }
+ protected @java.lang.SuppressWarnings("all") boolean canEqual(final java.lang.Object other) {
+ return (other instanceof EqualsAndHashCodeRank);
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = ((result * PRIME) + this.a);
+ result = ((result * PRIME) + this.c);
+ result = ((result * PRIME) + this.b);
+ return result;
+ }
+}
diff --git a/test/transform/resource/after-ecj/GetterLazyArguments.java b/test/transform/resource/after-ecj/GetterLazyArguments.java
new file mode 100644
index 00000000..41f1771f
--- /dev/null
+++ b/test/transform/resource/after-ecj/GetterLazyArguments.java
@@ -0,0 +1,106 @@
+class GetterLazyArguments {
+ private final @lombok.Getter(lazy = true) java.util.concurrent.atomic.AtomicReference<java.lang.Object> field1 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+ private final @lombok.Getter(lazy = true) java.util.concurrent.atomic.AtomicReference<java.lang.Object> field2 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+ private final @lombok.Getter(lazy = true) java.util.concurrent.atomic.AtomicReference<java.lang.Object> field3 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+ private final @lombok.Getter(lazy = true) java.util.concurrent.atomic.AtomicReference<java.lang.Object> field4 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+ private final @lombok.Getter(lazy = true) java.util.concurrent.atomic.AtomicReference<java.lang.Object> field5 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+ GetterLazyArguments() {
+ super();
+ }
+ static String fun() {
+ return null;
+ }
+ static String stringInt(String arg1, Integer arg2) {
+ return null;
+ }
+ static String stringRunnable(String arg1, Runnable arg2) {
+ return null;
+ }
+ public @java.lang.SuppressWarnings({"all", "unchecked"}) String getField1() {
+ java.lang.Object value = this.field1.get();
+ if ((value == null))
+ {
+ synchronized (this.field1)
+ {
+ value = this.field1.get();
+ if ((value == null))
+ {
+ final String actualValue = stringInt("a", 1);
+ value = ((actualValue == null) ? this.field1 : actualValue);
+ this.field1.set(value);
+ }
+ }
+ }
+ return (String) ((value == this.field1) ? null : value);
+ }
+ public @java.lang.SuppressWarnings({"all", "unchecked"}) String getField2() {
+ java.lang.Object value = this.field2.get();
+ if ((value == null))
+ {
+ synchronized (this.field2)
+ {
+ value = this.field2.get();
+ if ((value == null))
+ {
+ final String actualValue = stringInt((true ? "a" : "b"), (true ? 1 : 0));
+ value = ((actualValue == null) ? this.field2 : actualValue);
+ this.field2.set(value);
+ }
+ }
+ }
+ return (String) ((value == this.field2) ? null : value);
+ }
+ public @java.lang.SuppressWarnings({"all", "unchecked"}) String getField3() {
+ java.lang.Object value = this.field3.get();
+ if ((value == null))
+ {
+ synchronized (this.field3)
+ {
+ value = this.field3.get();
+ if ((value == null))
+ {
+ final String actualValue = stringInt("a", (true ? 1 : 0));
+ value = ((actualValue == null) ? this.field3 : actualValue);
+ this.field3.set(value);
+ }
+ }
+ }
+ return (String) ((value == this.field3) ? null : value);
+ }
+ public @java.lang.SuppressWarnings({"all", "unchecked"}) String getField4() {
+ java.lang.Object value = this.field4.get();
+ if ((value == null))
+ {
+ synchronized (this.field4)
+ {
+ value = this.field4.get();
+ if ((value == null))
+ {
+ final String actualValue = stringRunnable(fun(), () -> {
+});
+ value = ((actualValue == null) ? this.field4 : actualValue);
+ this.field4.set(value);
+ }
+ }
+ }
+ return (String) ((value == this.field4) ? null : value);
+ }
+ public @java.lang.SuppressWarnings({"all", "unchecked"}) String getField5() {
+ java.lang.Object value = this.field5.get();
+ if ((value == null))
+ {
+ synchronized (this.field5)
+ {
+ value = this.field5.get();
+ if ((value == null))
+ {
+ final String actualValue = stringRunnable("a", () -> {
+});
+ value = ((actualValue == null) ? this.field5 : actualValue);
+ this.field5.set(value);
+ }
+ }
+ }
+ return (String) ((value == this.field5) ? null : value);
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/JacksonBuilderSingular.java b/test/transform/resource/after-ecj/JacksonBuilderSingular.java
new file mode 100644
index 00000000..50f6a797
--- /dev/null
+++ b/test/transform/resource/after-ecj/JacksonBuilderSingular.java
@@ -0,0 +1,164 @@
+import java.util.List;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import lombok.Builder;
+import lombok.Singular;
+import lombok.extern.jackson.Jacksonized;
+public @Jacksonized @Builder @com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = JacksonBuilderSingular.JacksonBuilderSingularBuilder.class) class JacksonBuilderSingular {
+ public static @java.lang.SuppressWarnings("all") @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "",buildMethodName = "build") class JacksonBuilderSingularBuilder {
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<String> any$key;
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<Object> any$value;
+ private @java.lang.SuppressWarnings("all") java.util.ArrayList<String> values;
+ private @java.lang.SuppressWarnings("all") com.google.common.collect.ImmutableMap.Builder<String, Object> guavaAny;
+ private @java.lang.SuppressWarnings("all") com.google.common.collect.ImmutableList.Builder<String> guavaValues;
+ @java.lang.SuppressWarnings("all") JacksonBuilderSingularBuilder() {
+ super();
+ }
+ public @JsonAnySetter @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder any(final String anyKey, final Object anyValue) {
+ if ((this.any$key == null))
+ {
+ this.any$key = new java.util.ArrayList<String>();
+ this.any$value = new java.util.ArrayList<Object>();
+ }
+ this.any$key.add(anyKey);
+ this.any$value.add(anyValue);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder any(final java.util.Map<? extends String, ? extends Object> any) {
+ if ((any == null))
+ {
+ throw new java.lang.NullPointerException("any cannot be null");
+ }
+ if ((this.any$key == null))
+ {
+ this.any$key = new java.util.ArrayList<String>();
+ this.any$value = new java.util.ArrayList<Object>();
+ }
+ for (java.util.Map.Entry<? extends String, ? extends Object> $lombokEntry : any.entrySet())
+ {
+ this.any$key.add($lombokEntry.getKey());
+ this.any$value.add($lombokEntry.getValue());
+ }
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder clearAny() {
+ if ((this.any$key != null))
+ {
+ this.any$key.clear();
+ this.any$value.clear();
+ }
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder value(final String value) {
+ if ((this.values == null))
+ this.values = new java.util.ArrayList<String>();
+ this.values.add(value);
+ return this;
+ }
+ public @JsonProperty("v_a_l_u_e_s") @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder values(final java.util.Collection<? extends String> values) {
+ if ((values == null))
+ {
+ throw new java.lang.NullPointerException("values cannot be null");
+ }
+ if ((this.values == null))
+ this.values = new java.util.ArrayList<String>();
+ this.values.addAll(values);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder clearValues() {
+ if ((this.values != null))
+ this.values.clear();
+ return this;
+ }
+ public @JsonAnySetter @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder guavaAny(final String key, final Object value) {
+ if ((this.guavaAny == null))
+ this.guavaAny = com.google.common.collect.ImmutableMap.builder();
+ this.guavaAny.put(key, value);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder guavaAny(final java.util.Map<? extends String, ? extends Object> guavaAny) {
+ if ((guavaAny == null))
+ {
+ throw new java.lang.NullPointerException("guavaAny cannot be null");
+ }
+ if ((this.guavaAny == null))
+ this.guavaAny = com.google.common.collect.ImmutableMap.builder();
+ this.guavaAny.putAll(guavaAny);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder clearGuavaAny() {
+ this.guavaAny = null;
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder guavaValue(final String guavaValue) {
+ if ((this.guavaValues == null))
+ this.guavaValues = com.google.common.collect.ImmutableList.builder();
+ this.guavaValues.add(guavaValue);
+ return this;
+ }
+ public @JsonProperty("guava_v_a_l_u_e_s") @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder guavaValues(final java.lang.Iterable<? extends String> guavaValues) {
+ if ((guavaValues == null))
+ {
+ throw new java.lang.NullPointerException("guavaValues cannot be null");
+ }
+ if ((this.guavaValues == null))
+ this.guavaValues = com.google.common.collect.ImmutableList.builder();
+ this.guavaValues.addAll(guavaValues);
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder clearGuavaValues() {
+ this.guavaValues = null;
+ return this;
+ }
+ public @java.lang.SuppressWarnings("all") JacksonBuilderSingular build() {
+ java.util.Map<String, Object> any;
+ switch (((this.any$key == null) ? 0 : this.any$key.size())) {
+ case 0 :
+ any = java.util.Collections.emptyMap();
+ break;
+ case 1 :
+ any = java.util.Collections.singletonMap(this.any$key.get(0), this.any$value.get(0));
+ break;
+ default :
+ any = new java.util.LinkedHashMap<String, Object>(((this.any$key.size() < 0x40000000) ? ((1 + this.any$key.size()) + ((this.any$key.size() - 3) / 3)) : java.lang.Integer.MAX_VALUE));
+ for (int $i = 0;; ($i < this.any$key.size()); $i ++)
+ any.put(this.any$key.get($i), this.any$value.get($i));
+ any = java.util.Collections.unmodifiableMap(any);
+ }
+ java.util.List<String> values;
+ switch (((this.values == null) ? 0 : this.values.size())) {
+ case 0 :
+ values = java.util.Collections.emptyList();
+ break;
+ case 1 :
+ values = java.util.Collections.singletonList(this.values.get(0));
+ break;
+ default :
+ values = java.util.Collections.unmodifiableList(new java.util.ArrayList<String>(this.values));
+ }
+ com.google.common.collect.ImmutableMap<String, Object> guavaAny = ((this.guavaAny == null) ? com.google.common.collect.ImmutableMap.<String, Object>of() : this.guavaAny.build());
+ com.google.common.collect.ImmutableList<String> guavaValues = ((this.guavaValues == null) ? com.google.common.collect.ImmutableList.<String>of() : this.guavaValues.build());
+ return new JacksonBuilderSingular(any, values, guavaAny, guavaValues);
+ }
+ public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
+ return (((((((((("JacksonBuilderSingular.JacksonBuilderSingularBuilder(any$key=" + this.any$key) + ", any$value=") + this.any$value) + ", values=") + this.values) + ", guavaAny=") + this.guavaAny) + ", guavaValues=") + this.guavaValues) + ")");
+ }
+ }
+ private @JsonAnySetter @Singular("any") Map<String, Object> any;
+ private @JsonProperty("v_a_l_u_e_s") @Singular List<String> values;
+ private @JsonAnySetter @Singular("guavaAny") ImmutableMap<String, Object> guavaAny;
+ private @JsonProperty("guava_v_a_l_u_e_s") @Singular ImmutableList<String> guavaValues;
+ @java.lang.SuppressWarnings("all") JacksonBuilderSingular(final Map<String, Object> any, final List<String> values, final ImmutableMap<String, Object> guavaAny, final ImmutableList<String> guavaValues) {
+ super();
+ this.any = any;
+ this.values = values;
+ this.guavaAny = guavaAny;
+ this.guavaValues = guavaValues;
+ }
+ public static @java.lang.SuppressWarnings("all") JacksonBuilderSingular.JacksonBuilderSingularBuilder builder() {
+ return new JacksonBuilderSingular.JacksonBuilderSingularBuilder();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/LoggerCommons.java b/test/transform/resource/after-ecj/LoggerCommons.java
index df102a12..b2ca055f 100644
--- a/test/transform/resource/after-ecj/LoggerCommons.java
+++ b/test/transform/resource/after-ecj/LoggerCommons.java
@@ -22,4 +22,13 @@ import lombok.extern.apachecommons.CommonsLog;
LoggerCommonsWithDifferentName() {
super();
}
+}
+@CommonsLog(topic = LoggerCommonsWithStaticField.TOPIC) class LoggerCommonsWithStaticField {
+ private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LoggerCommonsWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+ <clinit>() {
+ }
+ LoggerCommonsWithStaticField() {
+ super();
+ }
} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/LoggerCustomWithTopicAndName.java b/test/transform/resource/after-ecj/LoggerCustomWithTopicAndName.java
index 91cf6d8d..f6f85744 100644
--- a/test/transform/resource/after-ecj/LoggerCustomWithTopicAndName.java
+++ b/test/transform/resource/after-ecj/LoggerCustomWithTopicAndName.java
@@ -6,6 +6,15 @@
super();
}
}
+@lombok.CustomLog(topic = LoggerCustomLogWithStaticField.TOPIC) class LoggerCustomLogWithStaticField {
+ private static final MyLoggerFactory log = MyLoggerFactory.create(LoggerCustomLogWithStaticField.class.getName(), LoggerCustomLogWithStaticField.TOPIC, null, LoggerCustomLogWithStaticField.class, LoggerCustomLogWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+ <clinit>() {
+ }
+ LoggerCustomLogWithStaticField() {
+ super();
+ }
+}
class MyLoggerFactory {
MyLoggerFactory() {
super();
diff --git a/test/transform/resource/after-ecj/LoggerJBossLog.java b/test/transform/resource/after-ecj/LoggerJBossLog.java
index e5c35708..c47f6c9e 100644
--- a/test/transform/resource/after-ecj/LoggerJBossLog.java
+++ b/test/transform/resource/after-ecj/LoggerJBossLog.java
@@ -35,4 +35,13 @@ class LoggerJBossLogOuter {
LoggerJBossLogWithDifferentLoggerName() {
super();
}
+}
+@JBossLog(topic = LoggerJBossLogWithStaticField.TOPIC) class LoggerJBossLogWithStaticField {
+ private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LoggerJBossLogWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+ <clinit>() {
+ }
+ LoggerJBossLogWithStaticField() {
+ super();
+ }
} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/LoggerJul.java b/test/transform/resource/after-ecj/LoggerJul.java
index 8aa4f59a..20cc5407 100644
--- a/test/transform/resource/after-ecj/LoggerJul.java
+++ b/test/transform/resource/after-ecj/LoggerJul.java
@@ -22,4 +22,13 @@ import lombok.extern.java.Log;
LoggerJulWithDifferentName() {
super();
}
+}
+@Log(topic = LoggerJulWithStaticField.TOPIC) class LoggerJulWithStaticField {
+ private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LoggerJulWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+ <clinit>() {
+ }
+ LoggerJulWithStaticField() {
+ super();
+ }
} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/LoggerLog4j.java b/test/transform/resource/after-ecj/LoggerLog4j.java
index 948412e2..e7d6c813 100644
--- a/test/transform/resource/after-ecj/LoggerLog4j.java
+++ b/test/transform/resource/after-ecj/LoggerLog4j.java
@@ -22,4 +22,13 @@ import lombok.extern.log4j.Log4j;
LoggerLog4jWithDifferentName() {
super();
}
+}
+@Log4j(topic = LoggerLog4jWithStaticField.TOPIC) class LoggerLog4jWithStaticField {
+ private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LoggerLog4jWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+ <clinit>() {
+ }
+ LoggerLog4jWithStaticField() {
+ super();
+ }
} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/LoggerLog4j2.java b/test/transform/resource/after-ecj/LoggerLog4j2.java
index c2fcd428..88def98d 100644
--- a/test/transform/resource/after-ecj/LoggerLog4j2.java
+++ b/test/transform/resource/after-ecj/LoggerLog4j2.java
@@ -22,4 +22,13 @@ import lombok.extern.log4j.Log4j2;
LoggerLog4j2WithDifferentName() {
super();
}
+}
+@Log4j2(topic = LoggerLog4j2WithStaticField.TOPIC) class LoggerLog4j2WithStaticField {
+ private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LoggerLog4j2WithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+ <clinit>() {
+ }
+ LoggerLog4j2WithStaticField() {
+ super();
+ }
} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/LoggerSlf4j.java b/test/transform/resource/after-ecj/LoggerSlf4j.java
index 9c5405cb..c303a895 100644
--- a/test/transform/resource/after-ecj/LoggerSlf4j.java
+++ b/test/transform/resource/after-ecj/LoggerSlf4j.java
@@ -36,4 +36,31 @@ class LoggerSlf4jOuter {
LoggerSlf4jWithDifferentLoggerName() {
super();
}
+}
+
+@Slf4j(topic = LoggerSlf4jWithStaticField.TOPIC) class LoggerSlf4jWithStaticField {
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+ <clinit>() {
+ }
+ LoggerSlf4jWithStaticField() {
+ super();
+ }
+}
+@Slf4j(topic = (LoggerSlf4jWithTwoStaticFields.TOPIC + LoggerSlf4jWithTwoStaticFields.TOPIC)) class LoggerSlf4jWithTwoStaticFields {
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger((LoggerSlf4jWithTwoStaticFields.TOPIC + LoggerSlf4jWithTwoStaticFields.TOPIC));
+ static final String TOPIC = "StaticField";
+ <clinit>() {
+ }
+ LoggerSlf4jWithTwoStaticFields() {
+ super();
+ }
+}
+@Slf4j(topic = ExtendedStringLiteral{AB}) class LoggerSlf4jWithTwoLiterals {
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger("AB");
+ <clinit>() {
+ }
+ LoggerSlf4jWithTwoLiterals() {
+ super();
+ }
} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/LoggerSlf4jInvalidTopic.java b/test/transform/resource/after-ecj/LoggerSlf4jInvalidTopic.java
new file mode 100644
index 00000000..33e212e3
--- /dev/null
+++ b/test/transform/resource/after-ecj/LoggerSlf4jInvalidTopic.java
@@ -0,0 +1,9 @@
+import lombok.extern.slf4j.Slf4j;
+@Slf4j(topic = 42) class LoggerSlf4jWithIntegerTopic {
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(42);
+ <clinit>() {
+ }
+ LoggerSlf4jWithIntegerTopic() {
+ super();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/LoggerXSlf4j.java b/test/transform/resource/after-ecj/LoggerXSlf4j.java
index 916859a4..04acdd77 100644
--- a/test/transform/resource/after-ecj/LoggerXSlf4j.java
+++ b/test/transform/resource/after-ecj/LoggerXSlf4j.java
@@ -22,4 +22,13 @@ import lombok.extern.slf4j.XSlf4j;
LoggerXSlf4jWithDifferentName() {
super();
}
-} \ No newline at end of file
+}
+@XSlf4j(topic = LoggerXSlf4jWithStaticField.TOPIC) class LoggerXSlf4jWithStaticField {
+ private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LoggerXSlf4jWithStaticField.TOPIC);
+ static final String TOPIC = "StaticField";
+ <clinit>() {
+ }
+ LoggerXSlf4jWithStaticField() {
+ super();
+ }
+}
diff --git a/test/transform/resource/after-ecj/SimpleTypeResolution.java b/test/transform/resource/after-ecj/SimpleTypeResolution.java
index c413623e..d8321ca4 100644
--- a/test/transform/resource/after-ecj/SimpleTypeResolution.java
+++ b/test/transform/resource/after-ecj/SimpleTypeResolution.java
@@ -1,11 +1,13 @@
class SimpleTypeResolutionFail {
private @Getter int x;
SimpleTypeResolutionFail() {
+ super();
}
}
class SimpleTypeResolutionSuccess {
private @lombok.Getter int x;
SimpleTypeResolutionSuccess() {
+ super();
}
public @java.lang.SuppressWarnings("all") int getX() {
return this.x;
diff --git a/test/transform/resource/after-ecj/SkipSuppressWarnings.java b/test/transform/resource/after-ecj/SkipSuppressWarnings.java
new file mode 100644
index 00000000..53032519
--- /dev/null
+++ b/test/transform/resource/after-ecj/SkipSuppressWarnings.java
@@ -0,0 +1,27 @@
+class SkipSuppressWarnings {
+ private @lombok.Getter String field = "";
+ private final @lombok.Getter(lazy = true) java.util.concurrent.atomic.AtomicReference<java.lang.Object> field2 = new java.util.concurrent.atomic.AtomicReference<java.lang.Object>();
+ SkipSuppressWarnings() {
+ super();
+ }
+ public String getField() {
+ return this.field;
+ }
+ public @java.lang.SuppressWarnings({"unchecked"}) String getField2() {
+ java.lang.Object value = this.field2.get();
+ if ((value == null))
+ {
+ synchronized (this.field2)
+ {
+ value = this.field2.get();
+ if ((value == null))
+ {
+ final String actualValue = "";
+ value = ((actualValue == null) ? this.field2 : actualValue);
+ this.field2.set(value);
+ }
+ }
+ }
+ return (String) ((value == this.field2) ? null : value);
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/SuperBuilderBasic.java b/test/transform/resource/after-ecj/SuperBuilderBasic.java
index b47f318d..7902c95f 100644
--- a/test/transform/resource/after-ecj/SuperBuilderBasic.java
+++ b/test/transform/resource/after-ecj/SuperBuilderBasic.java
@@ -71,8 +71,8 @@ public class SuperBuilderBasic {
return new SuperBuilderBasic.Parent.ParentBuilderImpl();
}
}
- public static @lombok.experimental.SuperBuilder class Child extends Parent {
- public static abstract @java.lang.SuppressWarnings("all") class ChildBuilder<C extends SuperBuilderBasic.Child, B extends SuperBuilderBasic.Child.ChildBuilder<C, B>> extends Parent.ParentBuilder<C, B> {
+ public static @lombok.experimental.SuperBuilder class Child extends SuperBuilderBasic.Parent {
+ public static abstract @java.lang.SuppressWarnings("all") class ChildBuilder<C extends SuperBuilderBasic.Child, B extends SuperBuilderBasic.Child.ChildBuilder<C, B>> extends SuperBuilderBasic.Parent.ParentBuilder<C, B> {
private @java.lang.SuppressWarnings("all") double field3;
public ChildBuilder() {
super();
diff --git a/test/transform/resource/after-ecj/SuperBuilderCustomized.java b/test/transform/resource/after-ecj/SuperBuilderCustomized.java
index 32317f6a..fe0e1238 100644
--- a/test/transform/resource/after-ecj/SuperBuilderCustomized.java
+++ b/test/transform/resource/after-ecj/SuperBuilderCustomized.java
@@ -32,12 +32,14 @@ public class SuperBuilderCustomized {
}
}
int field1;
- protected @java.lang.SuppressWarnings("all") Parent(final SuperBuilderCustomized.Parent.ParentBuilder<?, ?> b) {
+ protected Parent(ParentBuilder<?, ?> b) {
super();
+ if ((b.field1 == 0))
+ throw new IllegalArgumentException("field1 must be != 0");
this.field1 = b.field1;
}
- public static @java.lang.SuppressWarnings("all") SuperBuilderCustomized.Parent.ParentBuilder<?, ?> builder() {
- return new SuperBuilderCustomized.Parent.ParentBuilderImpl();
+ public static SuperBuilderCustomized.Parent.ParentBuilder<?, ?> builder(int field1) {
+ return new SuperBuilderCustomized.Parent.ParentBuilderImpl().field1(field1);
}
}
public static @lombok.experimental.SuperBuilder class Child extends Parent {
diff --git a/test/transform/resource/after-ecj/TypeUseAnnotations.java b/test/transform/resource/after-ecj/TypeUseAnnotations.java
index 156643b9..7041b59e 100644
--- a/test/transform/resource/after-ecj/TypeUseAnnotations.java
+++ b/test/transform/resource/after-ecj/TypeUseAnnotations.java
@@ -5,11 +5,20 @@ import java.util.List;
int x();
}
class TypeUseAnnotations {
+ class Inner {
+ Inner() {
+ super();
+ }
+ }
@lombok.Getter List<@TA(x = 5) String> foo;
+ @lombok.Getter List<TypeUseAnnotations.@TA(x = 5) Inner> bar;
TypeUseAnnotations() {
super();
}
public @java.lang.SuppressWarnings("all") List<@TA(x = 5) String> getFoo() {
return this.foo;
}
+ public @java.lang.SuppressWarnings("all") List<TypeUseAnnotations.@TA(x = 5) Inner> getBar() {
+ return this.bar;
+ }
} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/ValLambda.java b/test/transform/resource/after-ecj/ValLambda.java
index 5b52869f..6b59bdbd 100644
--- a/test/transform/resource/after-ecj/ValLambda.java
+++ b/test/transform/resource/after-ecj/ValLambda.java
@@ -1,3 +1,5 @@
+import java.io.Serializable;
+
class ValLambda {
static {
final @lombok.val java.lang.Runnable foo = ((System.currentTimeMillis() > 0) ? (Runnable) () -> {
@@ -16,8 +18,8 @@ class ValLambda {
final @lombok.val java.lang.Runnable foo = (Runnable) () -> {
};
}
- public void easyIntersectionLambda() {
- final @lombok.val java.lang.Runnable foo = (Runnable & java.io.Serializable) () -> {
+ public void intersectionLambda() {
+ final @lombok.val java.io.Serializable foo = (Runnable & Serializable) () -> {
};
final @lombok.val java.io.Serializable bar = (java.io.Serializable & Runnable) () -> {
};
diff --git a/test/transform/resource/after-ecj/ValueStaticConstructorOf.java b/test/transform/resource/after-ecj/ValueStaticConstructorOf.java
index 6cf71ed4..87883566 100644
--- a/test/transform/resource/after-ecj/ValueStaticConstructorOf.java
+++ b/test/transform/resource/after-ecj/ValueStaticConstructorOf.java
@@ -19,23 +19,23 @@ public final @Value(staticConstructor = "of") class ValueStaticConstructorOf {
if ((! (o instanceof ValueStaticConstructorOf)))
return false;
final ValueStaticConstructorOf other = (ValueStaticConstructorOf) o;
- final java.lang.Object this$name = this.getName();
- final java.lang.Object other$name = other.getName();
- if (((this$name == null) ? (other$name != null) : (! this$name.equals(other$name))))
- return false;
final java.lang.Object this$price = this.getPrice();
final java.lang.Object other$price = other.getPrice();
if (((this$price == null) ? (other$price != null) : (! this$price.equals(other$price))))
return false;
+ final java.lang.Object this$name = this.getName();
+ final java.lang.Object other$name = other.getName();
+ if (((this$name == null) ? (other$name != null) : (! this$name.equals(other$name))))
+ return false;
return true;
}
public @java.lang.Override @java.lang.SuppressWarnings("all") int hashCode() {
final int PRIME = 59;
int result = 1;
- final java.lang.Object $name = this.getName();
- result = ((result * PRIME) + (($name == null) ? 43 : $name.hashCode()));
final java.lang.Object $price = this.getPrice();
result = ((result * PRIME) + (($price == null) ? 43 : $price.hashCode()));
+ final java.lang.Object $name = this.getName();
+ result = ((result * PRIME) + (($name == null) ? 43 : $name.hashCode()));
return result;
}
public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
@@ -44,4 +44,4 @@ public final @Value(staticConstructor = "of") class ValueStaticConstructorOf {
public static @java.lang.SuppressWarnings("all") ValueStaticConstructorOf of(final String name, final Double price) {
return new ValueStaticConstructorOf(name, price);
}
-} \ No newline at end of file
+}
diff --git a/test/transform/resource/before/BuilderConstructorJavadoc.java b/test/transform/resource/before/BuilderConstructorJavadoc.java
new file mode 100644
index 00000000..ebbd473f
--- /dev/null
+++ b/test/transform/resource/before/BuilderConstructorJavadoc.java
@@ -0,0 +1,35 @@
+import java.util.List;
+
+class BuilderConstructorJavadoc<T> {
+ /**
+ * This is a comment
+ *
+ * @param basic tag is moved to the setter
+ * @param multiline a param comment
+ * can be on multiple lines and can use
+ * {@code @code} or <code>tags</code>
+ * @param predef don't copy this one
+ * @param predefWithJavadoc don't copy this one
+ */
+ @lombok.Builder
+ BuilderConstructorJavadoc(int basic, int multiline, int predef, int predefWithJavadoc) {
+
+ }
+
+ public static class BuilderConstructorJavadocBuilder<T> {
+ public BuilderConstructorJavadocBuilder<T> predef(final int x) {
+ this.predef = x;
+ return this;
+ }
+
+ /**
+ * This javadoc remains untouched.
+ * @param x 1/100 of the thing
+ * @return the updated builder
+ */
+ public BuilderConstructorJavadocBuilder<T> predefWithJavadoc(final int x) {
+ this.predefWithJavadoc = x;
+ return this;
+ }
+ }
+}
diff --git a/test/transform/resource/before/CheckerFrameworkSuperBuilder.java b/test/transform/resource/before/CheckerFrameworkSuperBuilder.java
index 54aefb37..ed9e14cb 100644
--- a/test/transform/resource/before/CheckerFrameworkSuperBuilder.java
+++ b/test/transform/resource/before/CheckerFrameworkSuperBuilder.java
@@ -12,7 +12,7 @@ class CheckerFrameworkSuperBuilder {
}
@lombok.experimental.SuperBuilder
- public static class Child extends Parent {
+ public static class ZChild extends Parent {
@lombok.Builder.Default int a = 1;
int b;
}
diff --git a/test/transform/resource/before/DelegateAlreadyImplemented.java b/test/transform/resource/before/DelegateAlreadyImplemented.java
new file mode 100644
index 00000000..c43c1949
--- /dev/null
+++ b/test/transform/resource/before/DelegateAlreadyImplemented.java
@@ -0,0 +1,45 @@
+public class DelegateAlreadyImplemented<T> {
+
+ @lombok.experimental.Delegate
+ private A<Integer, T> a;
+
+ public void a() {
+ }
+
+ public void b(java.util.List<String> l) {
+ }
+
+ public void c(java.util.List<Integer> l, String[] a, Integer... varargs) {
+ }
+
+ public void d(String[][][][] d) {
+ }
+
+ public <Y> void e(Y x) {
+ }
+
+ @SuppressWarnings("unchecked")
+ public void f(T s, java.util.List<T> l, T[] a, T... varargs) {
+ }
+
+ public void g(Number g) {
+ }
+}
+
+interface A<T, T2> {
+ public void a();
+
+ public void b(java.util.List<T> l);
+
+ @SuppressWarnings("unchecked")
+ public void c(java.util.List<T> l, String[] a, T... varargs);
+
+ public void d(String[][][][] d);
+
+ public <X> X e(X x);
+
+ @SuppressWarnings("unchecked")
+ public void f(T2 s, java.util.List<T2> l, T2[] a, T2... varargs);
+
+ public <G extends Number> void g(G g);
+} \ No newline at end of file
diff --git a/test/transform/resource/before/DelegateGenerics.java b/test/transform/resource/before/DelegateGenerics.java
new file mode 100644
index 00000000..e89158a9
--- /dev/null
+++ b/test/transform/resource/before/DelegateGenerics.java
@@ -0,0 +1,14 @@
+public class DelegateGenerics<T> {
+ @lombok.experimental.Delegate
+ I1<T> target;
+}
+
+interface I1<T> extends I2<T, Integer, String> {
+}
+interface I2<A, T, I> extends I3<Integer, I, A> {
+}
+interface I3<T, I, A> {
+ public T t(T t);
+ public I i(I a);
+ public A a(A a);
+} \ No newline at end of file
diff --git a/test/transform/resource/before/DelegateWithVarargs2.java b/test/transform/resource/before/DelegateWithVarargs2.java
new file mode 100644
index 00000000..8a3dbf14
--- /dev/null
+++ b/test/transform/resource/before/DelegateWithVarargs2.java
@@ -0,0 +1,9 @@
+import lombok.experimental.Delegate;
+
+class DelegateWithVarargs2 {
+ @Delegate private DelegateWithVarargs2.B bar;
+
+ public class B {
+ public void varargs(Object[]... keys) {}
+ }
+}
diff --git a/test/transform/resource/before/EqualsAndHashCodeRank.java b/test/transform/resource/before/EqualsAndHashCodeRank.java
new file mode 100644
index 00000000..5dda54f8
--- /dev/null
+++ b/test/transform/resource/before/EqualsAndHashCodeRank.java
@@ -0,0 +1,7 @@
+import lombok.EqualsAndHashCode;
+@EqualsAndHashCode
+public class EqualsAndHashCodeRank {
+ @EqualsAndHashCode.Include int a;
+ @EqualsAndHashCode.Include(rank = 10) int b;
+ @EqualsAndHashCode.Include int c;
+}
diff --git a/test/transform/resource/before/GetterLazyArguments.java b/test/transform/resource/before/GetterLazyArguments.java
new file mode 100644
index 00000000..47dfae55
--- /dev/null
+++ b/test/transform/resource/before/GetterLazyArguments.java
@@ -0,0 +1,21 @@
+// version 8:
+class GetterLazyArguments {
+ static String fun() { return null; }
+ static String stringInt(String arg1, Integer arg2) { return null; }
+ static String stringRunnable(String arg1, Runnable arg2) { return null; }
+
+ @lombok.Getter(lazy=true)
+ private final String field1 = stringInt(("a"), (1));
+
+ @lombok.Getter(lazy=true)
+ private final String field2 = stringInt(true ? "a" : "b", true ? 1 : 0);
+
+ @lombok.Getter(lazy=true)
+ private final String field3 = stringInt(("a"), true ? 1 : 0);
+
+ @lombok.Getter(lazy=true)
+ private final String field4 = stringRunnable(fun(), () -> { });
+
+ @lombok.Getter(lazy=true)
+ private final String field5 = stringRunnable(("a"), () -> { });
+}
diff --git a/test/transform/resource/before/JacksonBuilderSingular.java b/test/transform/resource/before/JacksonBuilderSingular.java
new file mode 100644
index 00000000..c179c760
--- /dev/null
+++ b/test/transform/resource/before/JacksonBuilderSingular.java
@@ -0,0 +1,31 @@
+import java.util.List;
+import java.util.Map;
+
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+
+import lombok.Builder;
+import lombok.Singular;
+import lombok.extern.jackson.Jacksonized;
+
+@Jacksonized
+@Builder
+public class JacksonBuilderSingular {
+ @JsonAnySetter
+ @Singular("any")
+ private Map<String, Object> any;
+
+ @JsonProperty("v_a_l_u_e_s")
+ @Singular
+ private List<String> values;
+
+ @JsonAnySetter
+ @Singular("guavaAny")
+ private ImmutableMap<String, Object> guavaAny;
+
+ @JsonProperty("guava_v_a_l_u_e_s")
+ @Singular
+ private ImmutableList<String> guavaValues;
+}
diff --git a/test/transform/resource/before/LoggerCommons.java b/test/transform/resource/before/LoggerCommons.java
index 00419d00..e209c1d0 100644
--- a/test/transform/resource/before/LoggerCommons.java
+++ b/test/transform/resource/before/LoggerCommons.java
@@ -11,3 +11,8 @@ class LoggerCommonsWithImport {
@CommonsLog(topic="DifferentName")
class LoggerCommonsWithDifferentName {
}
+
+@CommonsLog(topic=LoggerCommonsWithStaticField.TOPIC)
+class LoggerCommonsWithStaticField {
+ static final String TOPIC = "StaticField";
+} \ No newline at end of file
diff --git a/test/transform/resource/before/LoggerCustomWithTopicAndName.java b/test/transform/resource/before/LoggerCustomWithTopicAndName.java
index b40ed86a..5b803217 100644
--- a/test/transform/resource/before/LoggerCustomWithTopicAndName.java
+++ b/test/transform/resource/before/LoggerCustomWithTopicAndName.java
@@ -3,6 +3,11 @@
class LoggerCustomLog {
}
+@lombok.CustomLog(topic=LoggerCustomLogWithStaticField.TOPIC)
+class LoggerCustomLogWithStaticField {
+ static final String TOPIC = "StaticField";
+}
+
class MyLoggerFactory {
static MyLoggerFactory create(String name, String t1, Object o, Class<?> clazz, String t2) {
return null;
diff --git a/test/transform/resource/before/LoggerJBossLog.java b/test/transform/resource/before/LoggerJBossLog.java
index fbd88177..f3480867 100644
--- a/test/transform/resource/before/LoggerJBossLog.java
+++ b/test/transform/resource/before/LoggerJBossLog.java
@@ -17,4 +17,9 @@ class LoggerJBossLogOuter {
@JBossLog(topic="DifferentLogger")
class LoggerJBossLogWithDifferentLoggerName {
+}
+
+@JBossLog(topic=LoggerJBossLogWithStaticField.TOPIC)
+class LoggerJBossLogWithStaticField {
+ static final String TOPIC = "StaticField";
} \ No newline at end of file
diff --git a/test/transform/resource/before/LoggerJul.java b/test/transform/resource/before/LoggerJul.java
index 006cc344..7b10d015 100644
--- a/test/transform/resource/before/LoggerJul.java
+++ b/test/transform/resource/before/LoggerJul.java
@@ -10,4 +10,9 @@ class LoggerJulWithImport {
@Log(topic="DifferentName")
class LoggerJulWithDifferentName {
+}
+
+@Log(topic=LoggerJulWithStaticField.TOPIC)
+class LoggerJulWithStaticField {
+ static final String TOPIC = "StaticField";
} \ No newline at end of file
diff --git a/test/transform/resource/before/LoggerLog4j.java b/test/transform/resource/before/LoggerLog4j.java
index 351049c5..b7086a05 100644
--- a/test/transform/resource/before/LoggerLog4j.java
+++ b/test/transform/resource/before/LoggerLog4j.java
@@ -10,4 +10,9 @@ class LoggerLog4jWithImport {
@Log4j(topic="DifferentName")
class LoggerLog4jWithDifferentName {
+}
+
+@Log4j(topic=LoggerLog4jWithStaticField.TOPIC)
+class LoggerLog4jWithStaticField {
+ static final String TOPIC = "StaticField";
} \ No newline at end of file
diff --git a/test/transform/resource/before/LoggerLog4j2.java b/test/transform/resource/before/LoggerLog4j2.java
index c9cf9412..10b3aae5 100644
--- a/test/transform/resource/before/LoggerLog4j2.java
+++ b/test/transform/resource/before/LoggerLog4j2.java
@@ -10,4 +10,9 @@ class LoggerLog4j2WithImport {
@Log4j2(topic="DifferentName")
class LoggerLog4j2WithDifferentName {
+}
+
+@Log4j2(topic=LoggerLog4j2WithStaticField.TOPIC)
+class LoggerLog4j2WithStaticField {
+ static final String TOPIC = "StaticField";
} \ No newline at end of file
diff --git a/test/transform/resource/before/LoggerSlf4j.java b/test/transform/resource/before/LoggerSlf4j.java
index 1113a63e..3f8284e8 100644
--- a/test/transform/resource/before/LoggerSlf4j.java
+++ b/test/transform/resource/before/LoggerSlf4j.java
@@ -17,4 +17,18 @@ class LoggerSlf4jOuter {
@Slf4j(topic="DifferentLogger")
class LoggerSlf4jWithDifferentLoggerName {
+}
+
+@Slf4j(topic=LoggerSlf4jWithStaticField.TOPIC)
+class LoggerSlf4jWithStaticField {
+ static final String TOPIC = "StaticField";
+}
+
+@Slf4j(topic=LoggerSlf4jWithTwoStaticFields.TOPIC + LoggerSlf4jWithTwoStaticFields.TOPIC)
+class LoggerSlf4jWithTwoStaticFields {
+ static final String TOPIC = "StaticField";
+}
+
+@Slf4j(topic="A"+"B")
+class LoggerSlf4jWithTwoLiterals {
} \ No newline at end of file
diff --git a/test/transform/resource/before/LoggerSlf4jInvalidTopic.java b/test/transform/resource/before/LoggerSlf4jInvalidTopic.java
new file mode 100644
index 00000000..eed02f01
--- /dev/null
+++ b/test/transform/resource/before/LoggerSlf4jInvalidTopic.java
@@ -0,0 +1,5 @@
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j(topic=42)
+class LoggerSlf4jWithIntegerTopic {
+} \ No newline at end of file
diff --git a/test/transform/resource/before/LoggerXSlf4j.java b/test/transform/resource/before/LoggerXSlf4j.java
index a8bcb0c3..f70f2e2d 100644
--- a/test/transform/resource/before/LoggerXSlf4j.java
+++ b/test/transform/resource/before/LoggerXSlf4j.java
@@ -10,4 +10,9 @@ class LoggerXSlf4jWithImport {
@XSlf4j(topic="DifferentName")
class LoggerXSlf4jWithDifferentName {
+}
+
+@XSlf4j(topic=LoggerXSlf4jWithStaticField.TOPIC)
+class LoggerXSlf4jWithStaticField {
+ static final String TOPIC = "StaticField";
} \ No newline at end of file
diff --git a/test/transform/resource/before/SkipSuppressWarnings.java b/test/transform/resource/before/SkipSuppressWarnings.java
new file mode 100644
index 00000000..ed36eeb9
--- /dev/null
+++ b/test/transform/resource/before/SkipSuppressWarnings.java
@@ -0,0 +1,9 @@
+//CONF: lombok.addSuppressWarnings = false
+
+class SkipSuppressWarnings {
+ @lombok.Getter
+ private String field = "";
+
+ @lombok.Getter(lazy=true)
+ private final String field2 = "";
+} \ No newline at end of file
diff --git a/test/transform/resource/before/SuperBuilderBasic.java b/test/transform/resource/before/SuperBuilderBasic.java
index f4e8c670..99d7284e 100644
--- a/test/transform/resource/before/SuperBuilderBasic.java
+++ b/test/transform/resource/before/SuperBuilderBasic.java
@@ -8,7 +8,7 @@ public class SuperBuilderBasic {
}
@lombok.experimental.SuperBuilder
- public static class Child extends Parent {
+ public static class Child extends SuperBuilderBasic.Parent {
double field3;
}
diff --git a/test/transform/resource/before/SuperBuilderCustomized.java b/test/transform/resource/before/SuperBuilderCustomized.java
index 77830587..8e641d90 100644
--- a/test/transform/resource/before/SuperBuilderCustomized.java
+++ b/test/transform/resource/before/SuperBuilderCustomized.java
@@ -14,6 +14,16 @@ public class SuperBuilderCustomized {
}
}
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);
+ }
}
@lombok.experimental.SuperBuilder
diff --git a/test/transform/resource/before/TypeUseAnnotations.java b/test/transform/resource/before/TypeUseAnnotations.java
index c09a291d..7175930f 100644
--- a/test/transform/resource/before/TypeUseAnnotations.java
+++ b/test/transform/resource/before/TypeUseAnnotations.java
@@ -8,4 +8,6 @@ import java.util.List;
}
class TypeUseAnnotations {
@lombok.Getter List<@TA(x=5) String> foo;
+ @lombok.Getter List<TypeUseAnnotations.@TA(x=5) Inner> bar;
+ class Inner { }
}
diff --git a/test/transform/resource/before/ValLambda.java b/test/transform/resource/before/ValLambda.java
index 5c9c4a43..e956bcd3 100644
--- a/test/transform/resource/before/ValLambda.java
+++ b/test/transform/resource/before/ValLambda.java
@@ -1,4 +1,6 @@
// version 8:
+import java.io.Serializable;
+
class ValLambda {
static {
@@ -12,8 +14,8 @@ class ValLambda {
lombok.val foo = (Runnable)()-> {};
}
- public void easyIntersectionLambda() {
- lombok.val foo = (Runnable & java.io.Serializable)()-> {};
+ public void intersectionLambda() {
+ lombok.val foo = (Runnable & Serializable)()-> {};
lombok.val bar = (java.io.Serializable & Runnable)()-> {};
}
diff --git a/test/transform/resource/before/ValLub.java b/test/transform/resource/before/ValLub.java
index c1b41c26..509a4f8b 100644
--- a/test/transform/resource/before/ValLub.java
+++ b/test/transform/resource/before/ValLub.java
@@ -1,21 +1,21 @@
class ValLub {
public void easyLub() {
java.util.Map<String, Number> m = java.util.Collections.emptyMap();
-
+
lombok.val foo = (System.currentTimeMillis() > 0) ? m : java.util.Collections.<String, Number>emptyMap();
}
-
+
public void sillyLubWithUnboxingThatProducesErrorThatVarIsPrimitive() {
Integer i = 20;
Double d = 20.0;
-
+
lombok.val thisShouldBePrimitiveDouble = (System.currentTimeMillis() > 0) ? i : d;
}
-
+
public void hardLub() {
java.util.List<String> list = new java.util.ArrayList<String>();
java.util.Set<String> set = new java.util.HashSet<String>();
-
+
lombok.val thisShouldBeCollection = (System.currentTimeMillis() > 0) ? list : set;
thisShouldBeCollection.add("");
String foo = thisShouldBeCollection.iterator().next();
diff --git a/test/transform/resource/messages-delombok/LoggerSlf4jInvalidTopic.java.messages b/test/transform/resource/messages-delombok/LoggerSlf4jInvalidTopic.java.messages
new file mode 100644
index 00000000..8de0a120
--- /dev/null
+++ b/test/transform/resource/messages-delombok/LoggerSlf4jInvalidTopic.java.messages
@@ -0,0 +1,2 @@
+3 incompatible types: int cannot be converted to java.lang.String
+-1 not flagged modified \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/CheckerFrameworkBasic.java.messages b/test/transform/resource/messages-ecj/CheckerFrameworkBasic.java.messages
index 9bfcba0c..8cc7fb58 100644
--- a/test/transform/resource/messages-ecj/CheckerFrameworkBasic.java.messages
+++ b/test/transform/resource/messages-ecj/CheckerFrameworkBasic.java.messages
@@ -1 +1 @@
-8 org.checkerframework cannot be resolved to a type
+6 org.checkerframework.common cannot be resolved to a type
diff --git a/test/transform/resource/messages-ecj/CheckerFrameworkSuperBuilder.java.messages b/test/transform/resource/messages-ecj/CheckerFrameworkSuperBuilder.java.messages
index d385a95c..8cc7fb58 100644
--- a/test/transform/resource/messages-ecj/CheckerFrameworkSuperBuilder.java.messages
+++ b/test/transform/resource/messages-ecj/CheckerFrameworkSuperBuilder.java.messages
@@ -1 +1 @@
-6 org.checkerframework cannot be resolved to a type
+6 org.checkerframework.common cannot be resolved to a type
diff --git a/test/transform/resource/messages-ecj/LoggerSlf4jInvalidTopic.java.messages b/test/transform/resource/messages-ecj/LoggerSlf4jInvalidTopic.java.messages
new file mode 100644
index 00000000..9bc2a82b
--- /dev/null
+++ b/test/transform/resource/messages-ecj/LoggerSlf4jInvalidTopic.java.messages
@@ -0,0 +1 @@
+3 Type mismatch: cannot convert from int to String \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/SkipSuppressWarnings.java.messages b/test/transform/resource/messages-ecj/SkipSuppressWarnings.java.messages
new file mode 100644
index 00000000..5e7d759c
--- /dev/null
+++ b/test/transform/resource/messages-ecj/SkipSuppressWarnings.java.messages
@@ -0,0 +1 @@
+7 Unnecessary @SuppressWarnings("unchecked") \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/ValLambda.java.messages b/test/transform/resource/messages-ecj/ValLambda.java.messages
index e6940434..fa7231ef 100644
--- a/test/transform/resource/messages-ecj/ValLambda.java.messages
+++ b/test/transform/resource/messages-ecj/ValLambda.java.messages
@@ -1,2 +1,2 @@
-23 Function is a raw type. References to generic type Function<T,R> should be parameterized
-24 Function is a raw type. References to generic type Function<T,R> should be parameterized \ No newline at end of file
+24 Function is a raw type. References to generic type Function<T,R> should be parameterized
+25 Function is a raw type. References to generic type Function<T,R> should be parameterized \ No newline at end of file
diff --git a/test/transform/resource/messages-idempotent/LoggerSlf4jInvalidTopic.java.messages b/test/transform/resource/messages-idempotent/LoggerSlf4jInvalidTopic.java.messages
new file mode 100644
index 00000000..d894fad1
--- /dev/null
+++ b/test/transform/resource/messages-idempotent/LoggerSlf4jInvalidTopic.java.messages
@@ -0,0 +1 @@
+3 incompatible types: int cannot be converted to java.lang.String \ No newline at end of file