The testrunner now uses a different mechanism to verify correctness of produced errors and warnings (i.e. we intentionally compile code with errors in them to verify that the appropriate error or warning message is emitted when lombok is active during a compilation run of either javac or ecj) - instead of string comparisons, it's a little more complex. This to enable testing of both javac6 and javac7, even if they produce (slightly) different error output.

Updated all message files in the 'expected output' directories to represent this change.
This commit is contained in:
Reinier Zwitserloot committed 2012-10-25 00:07:44 +02:00
1 parent 2d21611898
commit d2808d407a
59 files changed
+320 -208

No files matched your search

+1 -2
View File
@@ -5,8 +5,7 @@
/ivyCache
/google.properties
/debug
/LombokizedEclipse.launch
/RunLombokTests.launch
/*.launch
/escudo-upload.key
/findbugsReport.html
/lib
+58 -6
View File
@@ -25,13 +25,19 @@ import static org.junit.Assert.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
public abstract class AbstractRunTests {
@@ -43,11 +49,23 @@ public abstract class AbstractRunTests {
}
public boolean compareFile(DirectoryRunner.TestParams params, File file) throws Throwable {
StringBuilder messages = new StringBuilder();
LinkedHashSet<CompilerMessage> messages = new LinkedHashSet<CompilerMessage>();
StringWriter writer = new StringWriter();
transformCode(messages, writer, file);
String expectedFile = readFile(params.getAfterDirectory(), file, false);
String expectedMessages = readFile(params.getMessagesDirectory(), file, true);
List<CompilerMessageMatcher> expectedMessages = Collections.emptyList();
if (params.getMessagesDirectory() != null) {
try {
InputStream in = new FileInputStream(new File(params.getMessagesDirectory(), file.getName() + ".messages"));
try {
expectedMessages = CompilerMessageMatcher.readAll(in);
} finally {
in.close();
}
} catch (FileNotFoundException ex) {
// That's okay - then we expect no messages, and expectedMessages already gets initialized to the empty list.
}
}
StringReader r = new StringReader(expectedFile);
BufferedReader br = new BufferedReader(r);
@@ -58,13 +76,13 @@ public abstract class AbstractRunTests {
expectedFile,
writer.toString(),
expectedMessages,
messages.toString(),
messages,
params.printErrors());
return true;
}
protected abstract void transformCode(StringBuilder message, StringWriter result, File file) throws Throwable;
protected abstract void transformCode(Collection<CompilerMessage> messages, StringWriter result, File file) throws Throwable;
protected String readFile(File file) throws IOException {
BufferedReader reader;
@@ -107,7 +125,19 @@ public abstract class AbstractRunTests {
}
}
private void compare(String name, String expectedFile, String actualFile, String expectedMessages, String actualMessages, boolean printErrors) throws Throwable {
private static void dumpToFile(File file, Collection<CompilerMessage> content) throws IOException {
FileOutputStream fos = new FileOutputStream(file);
try {
for (CompilerMessage message : content) {
fos.write(message.asCompilerMessageMatcher().toString().getBytes("UTF-8"));
fos.write('\n');
}
} finally {
fos.close();
}
}
private void compare(String name, String expectedFile, String actualFile, List<CompilerMessageMatcher> expectedMessages, LinkedHashSet<CompilerMessage> actualMessages, boolean printErrors) throws Throwable {
try {
compareContent(name, expectedFile, actualFile);
} catch (Throwable e) {
@@ -129,8 +159,9 @@ public abstract class AbstractRunTests {
}
throw e;
}
try {
compareContent(name, expectedMessages, actualMessages);
compareMessages(name, expectedMessages, actualMessages);
} catch (Throwable e) {
if (printErrors) {
System.out.println("***** " + name + " *****");
@@ -148,6 +179,27 @@ public abstract class AbstractRunTests {
}
}
private static void compareMessages(String name, List<CompilerMessageMatcher> expected, LinkedHashSet<CompilerMessage> actual) {
Iterator<CompilerMessageMatcher> expectedIterator = expected.iterator();
Iterator<CompilerMessage> actualIterator = actual.iterator();
while (true) {
boolean exHasNext = expectedIterator.hasNext();
boolean acHasNext = actualIterator.hasNext();
if (!exHasNext && !acHasNext) break;
if (exHasNext && acHasNext) {
CompilerMessageMatcher cmm = expectedIterator.next();
CompilerMessage cm = actualIterator.next();
if (cmm.matches(cm)) continue;
fail(String.format("[%s] Expected message '%s' but got message '%s'", name, cmm, cm));
throw new AssertionError("fail should have aborted already.");
}
if (exHasNext) fail(String.format("[%s] Expected message '%s' but ran out of actual messages", name, expectedIterator.next()));
if (acHasNext) fail(String.format("[%s] Unexpected message: %s", name, actualIterator.next()));
throw new AssertionError("fail should have aborted already.");
}
}
private static void compareContent(String name, String expectedFile, String actualFile) {
String[] expectedLines = expectedFile.split("(\\r?\\n)");
String[] actualLines = actualFile.split("(\\r?\\n)");
+50
View File
@@ -0,0 +1,50 @@
package lombok;
public final class CompilerMessage {
/** Line Number (starting at 1) */
final long line;
/** Position is either column number, OR position in file starting from the first byte. */
final long position;
final boolean isError;
final String message;
public CompilerMessage(long line, long position, boolean isError, String message) {
this.line = line;
this.position = position;
this.isError = isError;
this.message = message;
}
@Override public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (isError ? 1231 : 1237);
result = prime * result + (int) (line ^ (line >>> 32));
result = prime * result + ((message == null) ? 0 : message.hashCode());
result = prime * result + (int) (position ^ (position >>> 32));
return result;
}
@Override public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
CompilerMessage other = (CompilerMessage) obj;
if (isError != other.isError) return false;
if (line != other.line) return false;
if (message == null) {
if (other.message != null) return false;
} else if (!message.equals(other.message)) return false;
if (position != other.position) return false;
return true;
}
public CompilerMessageMatcher asCompilerMessageMatcher() {
return new CompilerMessageMatcher(line, position, message);
}
@Override public String toString() {
return String.format("%d:%d %s %s", line, position, isError ? "ERROR" : "WARNING", message);
}
}
@@ -0,0 +1,62 @@
package lombok;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CompilerMessageMatcher {
/** Line Number (starting at 1) */
private final long line;
/** Position is either column number, OR position in file starting from the first byte. */
private final long position;
private final Collection<String> messageParts;
public CompilerMessageMatcher(long line, long position, String message) {
this.line = line;
this.position = position;
this.messageParts = Arrays.asList(message.split("\\s+"));
}
@Override public String toString() {
StringBuilder parts = new StringBuilder();
for (String part : messageParts) parts.append(part).append(" ");
if (parts.length() > 0) parts.setLength(parts.length() - 1);
return String.format("%d:%d %s", line, position, parts);
}
public boolean matches(CompilerMessage message) {
if (message.line != this.line) return false;
if (message.position != this.position) return false;
for (String token : messageParts) {
if (!message.message.contains(token)) return false;
}
return true;
}
public static List<CompilerMessageMatcher> readAll(InputStream rawIn) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(rawIn, "UTF-8"));
List<CompilerMessageMatcher> out = new ArrayList<CompilerMessageMatcher>();
for (String line = in.readLine(); line != null; line = in.readLine()) {
CompilerMessageMatcher cmm = read(line);
if (cmm != null) out.add(cmm);
}
return out;
}
private static final Pattern PATTERN = Pattern.compile("^(\\d+):(\\d+) (.*)$");
private static CompilerMessageMatcher read(String line) {
line = line.trim();
if (line.isEmpty()) return null;
Matcher m = PATTERN.matcher(line);
if (!m.matches()) throw new IllegalArgumentException("Typo in test file: " + line);
return new CompilerMessageMatcher(Integer.parseInt(m.group(1)), Integer.parseInt(m.group(2)), m.group(3));
}
}
@@ -23,11 +23,13 @@ package lombok;
import java.io.File;
import java.io.StringWriter;
import java.util.Collection;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.tools.Diagnostic;
import javax.tools.Diagnostic.Kind;
import javax.tools.DiagnosticListener;
import javax.tools.JavaFileObject;
@@ -37,7 +39,7 @@ public class RunTestsViaDelombok extends AbstractRunTests {
private Delombok delombok = new Delombok();
@Override
public void transformCode(final StringBuilder messages, StringWriter result, final File file) throws Throwable {
public void transformCode(final Collection<CompilerMessage> messages, StringWriter result, final File file) throws Throwable {
delombok.setVerbose(false);
delombok.setForceProcess(true);
delombok.setCharset("UTF-8");
@@ -49,7 +51,7 @@ public class RunTestsViaDelombok extends AbstractRunTests {
"^" + Pattern.quote(file.getAbsolutePath()) +
"\\s*:\\s*\\d+\\s*:\\s*(?:warning:\\s*)?(.*)$", Pattern.DOTALL).matcher(msg);
if (m.matches()) msg = m.group(1);
messages.append(String.format("%d:%d %s %s\n", d.getLineNumber(), d.getColumnNumber(), d.getKind(), msg));
messages.add(new CompilerMessage(d.getLineNumber(), d.getColumnNumber(), d.getKind() == Kind.ERROR, msg));
}
});
+3 -2
View File
@@ -25,6 +25,7 @@ import java.io.File;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -84,7 +85,7 @@ public class RunTestsViaEcj extends AbstractRunTests {
}
@Override
public void transformCode(final StringBuilder messages, StringWriter result, File file) throws Throwable {
public void transformCode(Collection<CompilerMessage> messages, StringWriter result, File file) throws Throwable {
final AtomicReference<CompilationResult> compilationResult_ = new AtomicReference<CompilationResult>();
final AtomicReference<CompilationUnitDeclaration> compilationUnit_ = new AtomicReference<CompilationUnitDeclaration>();
ICompilerRequestor bitbucketRequestor = new ICompilerRequestor() {
@@ -109,7 +110,7 @@ public class RunTestsViaEcj extends AbstractRunTests {
CategorizedProblem[] problems = compilationResult.getAllProblems();
if (problems != null) for (CategorizedProblem p : problems) {
messages.append(String.format("%d %s %s\n", p.getSourceLineNumber(), p.isError() ? "error" : p.isWarning() ? "warning" : "unknown", p.getMessage()));
messages.add(new CompilerMessage(p.getSourceLineNumber(), p.getSourceStart(), p.isError(), p.getMessage()));
}
CompilationUnitDeclaration cud = compilationUnit_.get();
@@ -1 +1 @@
19:9 WARNING Not generating setter for this field: It does not fit your @Accessors prefix list.
19:9 Not generating setter for this field: It does not fit your @Accessors prefix list.
@@ -1 +1 @@
1:1 WARNING Ignoring static constructor name: explicit @XxxArgsConstructor annotation present; its `staticName` parameter will be used.
1:1 Ignoring static constructor name: explicit @XxxArgsConstructor annotation present; its `staticName` parameter will be used.
@@ -1,3 +1,3 @@
1:1 WARNING Not generating equals, hashCode and canEquals: A method with one of those names already exists. (Either all or none of these methods will be generated).
10:1 WARNING Not generating equals and hashCode: A method with one of those names already exists. (Either all or none of these methods will be generated).
19:1 WARNING Not generating equals, hashCode and canEquals: A method with one of those names already exists. (Either all or none of these methods will be generated).
1:1 Not generating equals, hashCode and canEquals: A method with one of those names already exists. (Either all or none of these methods will be generated).
10:1 Not generating equals and hashCode: A method with one of those names already exists. (Either all or none of these methods will be generated).
19:1 Not generating equals, hashCode and canEquals: A method with one of those names already exists. (Either all or none of these methods will be generated).
@@ -1 +1 @@
1:1 ERROR This does nothing; provide either level or makeFinal or both.
1:1 This does nothing; provide either level or makeFinal or both.
@@ -1,8 +1,8 @@
8:9 WARNING Not generating isFoo(): A method with that name already exists
14:9 WARNING Not generating isFoo(): A method with that name already exists (getFoo)
32:9 WARNING Not generating getFoo(): A method with that name already exists
50:9 WARNING Not generating getFoo(): A method with that name already exists
62:9 WARNING Not generating isFoo(): A method with that name already exists
68:9 WARNING Not generating isFoo(): A method with that name already exists (getFoo)
86:9 WARNING Not generating getFoo(): A method with that name already exists
104:9 WARNING Not generating getFoo(): A method with that name already exists
8:9 Not generating isFoo(): A method with that name already exists
14:9 Not generating isFoo(): A method with that name already exists (getFoo)
32:9 Not generating getFoo(): A method with that name already exists
50:9 Not generating getFoo(): A method with that name already exists
62:9 Not generating isFoo(): A method with that name already exists
68:9 Not generating isFoo(): A method with that name already exists (getFoo)
86:9 Not generating getFoo(): A method with that name already exists
104:9 Not generating getFoo(): A method with that name already exists
@@ -1 +1 @@
13:9 WARNING Not generating isFoo(): A method with that name already exists (getFoo)
13:9 Not generating isFoo(): A method with that name already exists (getFoo)
@@ -1,6 +1,6 @@
2:9 ERROR 'lazy' requires the field to be private and final.
6:9 ERROR 'lazy' requires the field to be private and final.
10:9 ERROR 'lazy' requires the field to be private and final.
14:9 WARNING 'lazy' does not work with AccessLevel.NONE.
17:1 ERROR 'lazy' is not supported for @Getter on a type.
22:9 ERROR 'lazy' requires field initialization.
2:9 'lazy' requires the field to be private and final.
6:9 'lazy' requires the field to be private and final.
10:9 'lazy' requires the field to be private and final.
14:9 'lazy' does not work with AccessLevel.NONE.
17:1 'lazy' is not supported for @Getter on a type.
22:9 'lazy' requires field initialization.
@@ -1,17 +1,7 @@
3:34 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Getter.AnyAnnotation
4:44 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Getter.AnyAnnotation
6:26 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Getter.AnyAnnotation
11:26 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Getter.AnyAnnotation
14:44 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Getter.AnyAnnotation
6:1 ERROR 'onMethod' is not supported for @Getter on a type.
11:1 ERROR 'onMethod' is not supported for @Getter on a type.
3:34 incompatible types
4:44 incompatible types
6:26 incompatible types
11:26 incompatible types
14:44 incompatible types
6:1 'onMethod' is not supported for @Getter on a type.
11:1 'onMethod' is not supported for @Getter on a type.
@@ -1 +1 @@
1:1 WARNING Field 'log' already exists.
1:1 Field 'log' already exists.
@@ -1 +1 @@
2:9 ERROR @Log is not legal on non-static inner classes.
2:9 @Log is not legal on non-static inner classes.
@@ -1 +1 @@
2:9 ERROR @Log is legal only on types.
2:9 @Log is legal only on types.
@@ -1,2 +1,2 @@
1:1 ERROR @Log is legal only on classes and enums.
4:1 ERROR @Log is legal only on classes and enums.
1:1 @Log is legal only on classes and enums.
4:1 @Log is legal only on classes and enums.
@@ -1,7 +1,7 @@
2:9 WARNING Not generating setFoo(): A method with that name already exists
8:9 WARNING Not generating setFoo(): A method with that name already exists
14:9 WARNING Not generating setFoo(): A method with that name already exists
20:9 WARNING Not generating setFoo(): A method with that name already exists
38:9 WARNING Not generating setFoo(): A method with that name already exists
44:9 WARNING Not generating setFoo(): A method with that name already exists (setIsFoo)
50:9 WARNING Not generating setFoo(): A method with that name already exists
2:9 Not generating setFoo(): A method with that name already exists
8:9 Not generating setFoo(): A method with that name already exists
14:9 Not generating setFoo(): A method with that name already exists
20:9 Not generating setFoo(): A method with that name already exists
38:9 Not generating setFoo(): A method with that name already exists
44:9 Not generating setFoo(): A method with that name already exists (setIsFoo)
50:9 Not generating setFoo(): A method with that name already exists
@@ -1,17 +1,7 @@
3:34 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Setter.AnyAnnotation
4:44 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Setter.AnyAnnotation
6:26 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Setter.AnyAnnotation
11:26 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Setter.AnyAnnotation
14:44 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Setter.AnyAnnotation
6:1 ERROR 'onMethod' is not supported for @Setter on a type.
11:1 ERROR 'onMethod' is not supported for @Setter on a type.
3:34 incompatible types
4:44 incompatible types
6:26 incompatible types
11:26 incompatible types
14:44 incompatible types
6:1 'onMethod' is not supported for @Setter on a type.
11:1 'onMethod' is not supported for @Setter on a type.
@@ -1,17 +1,7 @@
3:33 ERROR incompatible types
found : java.lang.SuppressWarnings
required: lombok.Setter.AnyAnnotation
4:43 ERROR incompatible types
found : java.lang.SuppressWarnings
required: lombok.Setter.AnyAnnotation
6:25 ERROR incompatible types
found : java.lang.SuppressWarnings
required: lombok.Setter.AnyAnnotation
11:25 ERROR incompatible types
found : java.lang.SuppressWarnings
required: lombok.Setter.AnyAnnotation
14:43 ERROR incompatible types
found : java.lang.SuppressWarnings
required: lombok.Setter.AnyAnnotation
6:1 ERROR 'onParam' is not supported for @Setter on a type.
11:1 ERROR 'onParam' is not supported for @Setter on a type.
3:33 incompatible types
4:43 incompatible types
6:25 incompatible types
11:25 incompatible types
14:43 incompatible types
6:1 'onParam' is not supported for @Setter on a type.
11:1 'onParam' is not supported for @Setter on a type.
@@ -1,6 +1,2 @@
2:34 ERROR incompatible types
found : java.lang.Deprecated
required: lombok.Setter.AnyAnnotation
2:54 ERROR incompatible types
found : java.lang.SuppressWarnings
required: lombok.Setter.AnyAnnotation
2:34 incompatible types
2:54 incompatible types
@@ -1,9 +1 @@
2:10 ERROR cannot find symbol
symbol : class Getter
location: class SimpleTypeResolutionFail
2:10 ERROR cannot find symbol
symbol : class Getter
location: class SimpleTypeResolutionFail
2:10 ERROR cannot find symbol
symbol : class Getter
location: class SimpleTypeResolutionFail
2:10 cannot find symbol
@@ -1 +1 @@
5:9 ERROR The field write does not exist.
5:9 The field write does not exist.
@@ -1 +1 @@
5:9 ERROR non-static variable read cannot be referenced from a static context
5:9 non-static variable read cannot be referenced from a static context
@@ -1,2 +1,2 @@
5:21 ERROR Cannot use 'val' here because initializer expression does not have a representable type: Type cannot be resolved
9:21 ERROR 'val' is not compatible with array initializer expressions. Use the full form (new int[] { ... } instead of just { ... })
5:21 Cannot use 'val' here because initializer expression does not have a representable type: Type cannot be resolved
9:21 'val' is not compatible with array initializer expressions. Use the full form (new int[] { ... } instead of just { ... })
@@ -1,3 +1,3 @@
6:26 ERROR 'val' is not allowed in old-style for loops
6:40 ERROR 'val' is not allowed in old-style for loops
6:53 ERROR 'val' is not allowed in old-style for loops
6:26 'val' is not allowed in old-style for loops
6:40 'val' is not allowed in old-style for loops
6:53 'val' is not allowed in old-style for loops
@@ -1,7 +1,7 @@
2:9 WARNING Not generating withFoo(): A method with that name already exists
12:9 WARNING Not generating withFoo(): A method with that name already exists
22:9 WARNING Not generating withFoo(): A method with that name already exists
32:9 WARNING Not generating withFoo(): A method with that name already exists
62:9 WARNING Not generating withFoo(): A method with that name already exists
72:9 WARNING Not generating withFoo(): A method with that name already exists (withIsFoo)
82:9 WARNING Not generating withFoo(): A method with that name already exists
2:9 Not generating withFoo(): A method with that name already exists
12:9 Not generating withFoo(): A method with that name already exists
22:9 Not generating withFoo(): A method with that name already exists
32:9 Not generating withFoo(): A method with that name already exists
62:9 Not generating withFoo(): A method with that name already exists
72:9 Not generating withFoo(): A method with that name already exists (withIsFoo)
82:9 Not generating withFoo(): A method with that name already exists
@@ -1,2 +1,2 @@
2:9 WARNING Not generating wither for this field: Withers cannot be generated for static fields.
3:9 WARNING Not generating wither for this field: Withers cannot be generated for static fields.
2:9 Not generating wither for this field: Withers cannot be generated for static fields.
3:9 Not generating wither for this field: Withers cannot be generated for static fields.
@@ -1 +1 @@
2:9 WARNING Not generating wither for this field: Withers cannot be generated for fields starting with $.
2:9 Not generating wither for this field: Withers cannot be generated for fields starting with $.
@@ -1 +1 @@
19 warning Not generating setter for this field: It does not fit your @Accessors prefix list.
19:530 Not generating setter for this field: It does not fit your @Accessors prefix list.
@@ -1 +1 @@
1 warning Ignoring static constructor name: explicit @XxxArgsConstructor annotation present; its `staticName` parameter will be used.
1:0 Ignoring static constructor name: explicit @XxxArgsConstructor annotation present; its `staticName` parameter will be used.
@@ -1,3 +1,3 @@
1 warning Not generating equals, hashCode and canEquals: A method with one of those names already exists. (Either all or none of these methods will be generated).
10 warning Not generating equals and hashCode: A method with one of those names already exists. (Either all or none of these methods will be generated).
19 warning Not generating equals, hashCode and canEquals: A method with one of those names already exists. (Either all or none of these methods will be generated).
1:0 Not generating equals, hashCode and canEquals: A method with one of those names already exists. (Either all or none of these methods will be generated).
10:125 Not generating equals and hashCode: A method with one of those names already exists. (Either all or none of these methods will be generated).
19:274 Not generating equals, hashCode and canEquals: A method with one of those names already exists. (Either all or none of these methods will be generated).
@@ -1 +1 @@
1 error This does nothing; provide either level or makeFinal or both.
1:0 This does nothing; provide either level or makeFinal or both.
@@ -1,8 +1,8 @@
8 warning Not generating isFoo(): A method with that name already exists
14 warning Not generating isFoo(): A method with that name already exists (getFoo)
32 warning Not generating getFoo(): A method with that name already exists
50 warning Not generating getFoo(): A method with that name already exists
62 warning Not generating isFoo(): A method with that name already exists
68 warning Not generating isFoo(): A method with that name already exists (getFoo)
86 warning Not generating getFoo(): A method with that name already exists
104 warning Not generating getFoo(): A method with that name already exists
8:102 Not generating isFoo(): A method with that name already exists
14:186 Not generating isFoo(): A method with that name already exists (getFoo)
32:436 Not generating getFoo(): A method with that name already exists
50:688 Not generating getFoo(): A method with that name already exists
62:868 Not generating isFoo(): A method with that name already exists
68:961 Not generating isFoo(): A method with that name already exists (getFoo)
86:1240 Not generating getFoo(): A method with that name already exists
104:1510 Not generating getFoo(): A method with that name already exists
@@ -1 +1 @@
13 warning Not generating isFoo(): A method with that name already exists (getFoo)
13:220 Not generating isFoo(): A method with that name already exists (getFoo)
@@ -1,6 +1,6 @@
2 error 'lazy' requires the field to be private and final.
6 error 'lazy' requires the field to be private and final.
10 error 'lazy' requires the field to be private and final.
14 warning 'lazy' does not work with AccessLevel.NONE.
17 error 'lazy' is not supported for @Getter on a type.
22 error 'lazy' requires field initialization.
2:35 'lazy' requires the field to be private and final.
6:132 'lazy' requires the field to be private and final.
10:232 'lazy' requires the field to be private and final.
14:315 'lazy' does not work with AccessLevel.NONE.
17:412 'lazy' is not supported for @Getter on a type.
22:544 'lazy' requires field initialization.
@@ -1,2 +1,2 @@
6 error 'onMethod' is not supported for @Getter on a type.
11 error 'onMethod' is not supported for @Getter on a type.
6:0 'onMethod' is not supported for @Getter on a type.
11:0 'onMethod' is not supported for @Getter on a type.
@@ -1 +1 @@
1 warning Field 'log' already exists.
1:0 Field 'log' already exists.
@@ -1 +1 @@
2:9 ERROR @Log is not legal on non-static inner classes.
2:9 @Log is not legal on non-static inner classes.
@@ -1 +1 @@
2 error The annotation @Slf4j is disallowed for this location
2:30 The annotation @Slf4j is disallowed for this location
@@ -1,2 +1,2 @@
1 error @Slf4j is legal only on classes and enums.
4 error @Slf4j is legal only on classes and enums.
1:0 @Slf4j is legal only on classes and enums.
4:67 @Slf4j is legal only on classes and enums.
@@ -1,7 +1,7 @@
2 warning Not generating setFoo(): A method with that name already exists
8 warning Not generating setFoo(): A method with that name already exists
14 warning Not generating setFoo(): A method with that name already exists
20 warning Not generating setFoo(): A method with that name already exists
38 warning Not generating setFoo(): A method with that name already exists
44 warning Not generating setFoo(): A method with that name already exists (setIsFoo)
50 warning Not generating setFoo(): A method with that name already exists
2:17 Not generating setFoo(): A method with that name already exists
8:96 Not generating setFoo(): A method with that name already exists
14:174 Not generating setFoo(): A method with that name already exists
20:252 Not generating setFoo(): A method with that name already exists
38:480 Not generating setFoo(): A method with that name already exists
44:570 Not generating setFoo(): A method with that name already exists (setIsFoo)
50:653 Not generating setFoo(): A method with that name already exists
@@ -1,2 +1,2 @@
6 error 'onMethod' is not supported for @Setter on a type.
11 error 'onMethod' is not supported for @Setter on a type.
6:0 'onMethod' is not supported for @Setter on a type.
11:0 'onMethod' is not supported for @Setter on a type.
@@ -1,2 +1,2 @@
6 error 'onParam' is not supported for @Setter on a type.
11 error 'onParam' is not supported for @Setter on a type.
6:0 'onParam' is not supported for @Setter on a type.
11:0 'onParam' is not supported for @Setter on a type.
@@ -1 +1 @@
2 error Getter cannot be resolved to a type
2:35 Getter cannot be resolved to a type
@@ -1 +1 @@
8 warning The static field SynchronizedName.READ should be accessed in a static way
8:185 The static field SynchronizedName.READ should be accessed in a static way
@@ -1 +1 @@
5 error The field write does not exist.
5:120 The field write does not exist.
@@ -1 +1 @@
5 error Cannot make a static reference to the non-static field SynchronizedNameStaticToInstanceRef.read
5:127 Cannot make a static reference to the non-static field SynchronizedNameStaticToInstanceRef.read
@@ -1,2 +1,2 @@
5 error d cannot be resolved to a variable
9 error 'val' is not compatible with array initializer expressions. Use the full form (new int[] { ... } instead of just { ... })
5:95 d cannot be resolved to a variable
9:143 'val' is not compatible with array initializer expressions. Use the full form (new int[] { ... } instead of just { ... })
@@ -1,4 +1,4 @@
6 error 'val' is not allowed in old-style for loops
6 error Type mismatch: cannot convert from int to val
6 error 'val' is not allowed in old-style for loops
6 error 'val' is not allowed in old-style for loops
6:160 'val' is not allowed in old-style for loops
6:171 Type mismatch: cannot convert from int to val
6:174 'val' is not allowed in old-style for loops
6:187 'val' is not allowed in old-style for loops
@@ -1 +1 @@
13 warning List is a raw type. References to generic type List<E> should be parameterized
13:260 List is a raw type. References to generic type List<E> should be parameterized
@@ -1,7 +1,7 @@
2 warning Not generating withFoo(): A method with that name already exists
12 warning Not generating withFoo(): A method with that name already exists
22 warning Not generating withFoo(): A method with that name already exists
32 warning Not generating withFoo(): A method with that name already exists
62 warning Not generating withFoo(): A method with that name already exists
72 warning Not generating withFoo(): A method with that name already exists (withIsFoo)
82 warning Not generating withFoo(): A method with that name already exists
2:17 Not generating withFoo(): A method with that name already exists
12:141 Not generating withFoo(): A method with that name already exists
22:264 Not generating withFoo(): A method with that name already exists
32:386 Not generating withFoo(): A method with that name already exists
62:746 Not generating withFoo(): A method with that name already exists
72:880 Not generating withFoo(): A method with that name already exists (withIsFoo)
82:1008 Not generating withFoo(): A method with that name already exists
@@ -1,2 +1,2 @@
2 warning Not generating wither for this field: Withers cannot be generated for static fields.
3 warning Not generating wither for this field: Withers cannot be generated for static fields.
2:24 Not generating wither for this field: Withers cannot be generated for static fields.
3:73 Not generating wither for this field: Withers cannot be generated for static fields.
@@ -1 +1 @@
2 warning Not generating wither for this field: Withers cannot be generated for fields starting with $.
2:26 Not generating wither for this field: Withers cannot be generated for fields starting with $.
@@ -1,9 +1 @@
2:10 ERROR cannot find symbol
symbol : class Getter
location: class SimpleTypeResolutionFail
2:10 ERROR cannot find symbol
symbol : class Getter
location: class SimpleTypeResolutionFail
2:10 ERROR cannot find symbol
symbol : class Getter
location: class SimpleTypeResolutionFail
2:10 cannot find symbol
@@ -1 +1 @@
5:66 ERROR non-static variable read cannot be referenced from a static context
5:66 non-static variable read cannot be referenced from a static context
@@ -1,7 +1,3 @@
3:44 ERROR cannot find symbol
symbol : variable d
location: class ValErrors
6:17 ERROR cannot find symbol
symbol : class val
location: class ValErrors
6:25 ERROR illegal initializer for <none>
3:44 cannot find symbol
6:17 cannot find symbol
6:25 illegal initializer for <none>
@@ -1,3 +1,3 @@
5:26 ERROR 'val' is not allowed in old-style for loops
5:40 ERROR 'val' is not allowed in old-style for loops
5:53 ERROR 'val' is not allowed in old-style for loops
5:26 'val' is not allowed in old-style for loops
5:40 'val' is not allowed in old-style for loops
5:53 'val' is not allowed in old-style for loops