aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/core/src/lombok/AbstractRunTests.java64
-rw-r--r--test/core/src/lombok/CompilerMessage.java50
-rw-r--r--test/core/src/lombok/CompilerMessageMatcher.java62
-rw-r--r--test/core/src/lombok/RunTestsViaDelombok.java6
-rw-r--r--test/core/src/lombok/RunTestsViaEcj.java5
-rw-r--r--test/transform/resource/messages-delombok/Accessors.java.messages2
-rw-r--r--test/transform/resource/messages-delombok/ConflictingStaticConstructorNames.java.messages2
-rw-r--r--test/transform/resource/messages-delombok/EqualsAndHashCodeWithExistingMethods.java.messages6
-rw-r--r--test/transform/resource/messages-delombok/FieldDefaultsNoop.java.messages2
-rw-r--r--test/transform/resource/messages-delombok/GetterAlreadyExists.java.messages16
-rw-r--r--test/transform/resource/messages-delombok/GetterBoolean.java.messages2
-rw-r--r--test/transform/resource/messages-delombok/GetterLazyInvalid.java.messages12
-rw-r--r--test/transform/resource/messages-delombok/GetterOnMethod.java.messages24
-rw-r--r--test/transform/resource/messages-delombok/LoggerSlf4jAlreadyExists.java.messages2
-rw-r--r--test/transform/resource/messages-delombok/LoggerSlf4jOnNonStaticInnerClass.java.messages2
-rw-r--r--test/transform/resource/messages-delombok/LoggerSlf4jOnNonType.java.messages2
-rw-r--r--test/transform/resource/messages-delombok/LoggerSlf4jTypes.java.messages4
-rw-r--r--test/transform/resource/messages-delombok/SetterAlreadyExists.java.messages14
-rw-r--r--test/transform/resource/messages-delombok/SetterOnMethod.java.messages24
-rw-r--r--test/transform/resource/messages-delombok/SetterOnParam.java.messages24
-rw-r--r--test/transform/resource/messages-delombok/SetterOnParamAndOnMethod.java.messages8
-rw-r--r--test/transform/resource/messages-delombok/SimpleTypeResolution.java.messages10
-rw-r--r--test/transform/resource/messages-delombok/SynchronizedNameNoSuchField.java.messages2
-rw-r--r--test/transform/resource/messages-delombok/SynchronizedNameStaticToInstanceRef.java.messages2
-rw-r--r--test/transform/resource/messages-delombok/ValErrors.java.messages4
-rw-r--r--test/transform/resource/messages-delombok/ValInBasicFor.java.messages6
-rw-r--r--test/transform/resource/messages-delombok/WitherAlreadyExists.java.messages14
-rw-r--r--test/transform/resource/messages-delombok/WitherOnStatic.java.messages4
-rw-r--r--test/transform/resource/messages-delombok/WitherWithDollar.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/Accessors.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/ConflictingStaticConstructorNames.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/EqualsAndHashCodeWithExistingMethods.java.messages6
-rw-r--r--test/transform/resource/messages-ecj/FieldDefaultsNoop.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/GetterAlreadyExists.java.messages16
-rw-r--r--test/transform/resource/messages-ecj/GetterBoolean.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/GetterLazyInvalid.java.messages12
-rw-r--r--test/transform/resource/messages-ecj/GetterOnMethod.java.messages4
-rw-r--r--test/transform/resource/messages-ecj/LoggerSlf4jAlreadyExists.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/LoggerSlf4jOnNonStaticInnerClass.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/LoggerSlf4jOnNonType.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/LoggerSlf4jTypes.java.messages4
-rw-r--r--test/transform/resource/messages-ecj/SetterAlreadyExists.java.messages14
-rw-r--r--test/transform/resource/messages-ecj/SetterOnMethod.java.messages4
-rw-r--r--test/transform/resource/messages-ecj/SetterOnParam.java.messages4
-rw-r--r--test/transform/resource/messages-ecj/SimpleTypeResolution.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/SynchronizedName.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/SynchronizedNameNoSuchField.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/SynchronizedNameStaticToInstanceRef.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/ValErrors.java.messages4
-rw-r--r--test/transform/resource/messages-ecj/ValInBasicFor.java.messages8
-rw-r--r--test/transform/resource/messages-ecj/ValRawType.java.messages2
-rw-r--r--test/transform/resource/messages-ecj/WitherAlreadyExists.java.messages14
-rw-r--r--test/transform/resource/messages-ecj/WitherOnStatic.java.messages4
-rw-r--r--test/transform/resource/messages-ecj/WitherWithDollar.java.messages2
-rw-r--r--test/transform/resource/messages-idempotent/SimpleTypeResolution.java.messages10
-rw-r--r--test/transform/resource/messages-idempotent/SynchronizedNameStaticToInstanceRef.java.messages2
-rw-r--r--test/transform/resource/messages-idempotent/ValErrors.java.messages10
-rw-r--r--test/transform/resource/messages-idempotent/ValInBasicFor.java.messages6
58 files changed, 319 insertions, 206 deletions
diff --git a/test/core/src/lombok/AbstractRunTests.java b/test/core/src/lombok/AbstractRunTests.java
index 02c4803a..676426f4 100644
--- a/test/core/src/lombok/AbstractRunTests.java
+++ b/test/core/src/lombok/AbstractRunTests.java
@@ -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)");
diff --git a/test/core/src/lombok/CompilerMessage.java b/test/core/src/lombok/CompilerMessage.java
new file mode 100644
index 00000000..d04d17f1
--- /dev/null
+++ b/test/core/src/lombok/CompilerMessage.java
@@ -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);
+ }
+}
diff --git a/test/core/src/lombok/CompilerMessageMatcher.java b/test/core/src/lombok/CompilerMessageMatcher.java
new file mode 100644
index 00000000..b7902395
--- /dev/null
+++ b/test/core/src/lombok/CompilerMessageMatcher.java
@@ -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));
+ }
+}
diff --git a/test/core/src/lombok/RunTestsViaDelombok.java b/test/core/src/lombok/RunTestsViaDelombok.java
index e58cffc0..16eae8d3 100644
--- a/test/core/src/lombok/RunTestsViaDelombok.java
+++ b/test/core/src/lombok/RunTestsViaDelombok.java
@@ -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));
}
});
diff --git a/test/core/src/lombok/RunTestsViaEcj.java b/test/core/src/lombok/RunTestsViaEcj.java
index 5c573efd..112f07f9 100644
--- a/test/core/src/lombok/RunTestsViaEcj.java
+++ b/test/core/src/lombok/RunTestsViaEcj.java
@@ -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();
diff --git a/test/transform/resource/messages-delombok/Accessors.java.messages b/test/transform/resource/messages-delombok/Accessors.java.messages
index 4c7a0daa..367621bd 100644
--- a/test/transform/resource/messages-delombok/Accessors.java.messages
+++ b/test/transform/resource/messages-delombok/Accessors.java.messages
@@ -1 +1 @@
-19:9 WARNING Not generating setter for this field: It does not fit your @Accessors prefix list. \ No newline at end of file
+19:9 Not generating setter for this field: It does not fit your @Accessors prefix list. \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/ConflictingStaticConstructorNames.java.messages b/test/transform/resource/messages-delombok/ConflictingStaticConstructorNames.java.messages
index 40366cd7..06b88c10 100644
--- a/test/transform/resource/messages-delombok/ConflictingStaticConstructorNames.java.messages
+++ b/test/transform/resource/messages-delombok/ConflictingStaticConstructorNames.java.messages
@@ -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.
diff --git a/test/transform/resource/messages-delombok/EqualsAndHashCodeWithExistingMethods.java.messages b/test/transform/resource/messages-delombok/EqualsAndHashCodeWithExistingMethods.java.messages
index dd78e67f..057a7521 100644
--- a/test/transform/resource/messages-delombok/EqualsAndHashCodeWithExistingMethods.java.messages
+++ b/test/transform/resource/messages-delombok/EqualsAndHashCodeWithExistingMethods.java.messages
@@ -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).
diff --git a/test/transform/resource/messages-delombok/FieldDefaultsNoop.java.messages b/test/transform/resource/messages-delombok/FieldDefaultsNoop.java.messages
index 65fed477..ae5dd265 100644
--- a/test/transform/resource/messages-delombok/FieldDefaultsNoop.java.messages
+++ b/test/transform/resource/messages-delombok/FieldDefaultsNoop.java.messages
@@ -1 +1 @@
-1:1 ERROR This does nothing; provide either level or makeFinal or both. \ No newline at end of file
+1:1 This does nothing; provide either level or makeFinal or both. \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/GetterAlreadyExists.java.messages b/test/transform/resource/messages-delombok/GetterAlreadyExists.java.messages
index 302bbced..7a326742 100644
--- a/test/transform/resource/messages-delombok/GetterAlreadyExists.java.messages
+++ b/test/transform/resource/messages-delombok/GetterAlreadyExists.java.messages
@@ -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
diff --git a/test/transform/resource/messages-delombok/GetterBoolean.java.messages b/test/transform/resource/messages-delombok/GetterBoolean.java.messages
index 3d14bcc9..91ad3512 100644
--- a/test/transform/resource/messages-delombok/GetterBoolean.java.messages
+++ b/test/transform/resource/messages-delombok/GetterBoolean.java.messages
@@ -1 +1 @@
-13:9 WARNING Not generating isFoo(): A method with that name already exists (getFoo) \ No newline at end of file
+13:9 Not generating isFoo(): A method with that name already exists (getFoo) \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/GetterLazyInvalid.java.messages b/test/transform/resource/messages-delombok/GetterLazyInvalid.java.messages
index 4f7e3df8..5c72fd56 100644
--- a/test/transform/resource/messages-delombok/GetterLazyInvalid.java.messages
+++ b/test/transform/resource/messages-delombok/GetterLazyInvalid.java.messages
@@ -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. \ No newline at end of file
+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. \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/GetterOnMethod.java.messages b/test/transform/resource/messages-delombok/GetterOnMethod.java.messages
index d437cb05..db5ef9a6 100644
--- a/test/transform/resource/messages-delombok/GetterOnMethod.java.messages
+++ b/test/transform/resource/messages-delombok/GetterOnMethod.java.messages
@@ -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.
diff --git a/test/transform/resource/messages-delombok/LoggerSlf4jAlreadyExists.java.messages b/test/transform/resource/messages-delombok/LoggerSlf4jAlreadyExists.java.messages
index ede6defa..8aa22226 100644
--- a/test/transform/resource/messages-delombok/LoggerSlf4jAlreadyExists.java.messages
+++ b/test/transform/resource/messages-delombok/LoggerSlf4jAlreadyExists.java.messages
@@ -1 +1 @@
-1:1 WARNING Field 'log' already exists.
+1:1 Field 'log' already exists.
diff --git a/test/transform/resource/messages-delombok/LoggerSlf4jOnNonStaticInnerClass.java.messages b/test/transform/resource/messages-delombok/LoggerSlf4jOnNonStaticInnerClass.java.messages
index e0bbdb2a..570a169b 100644
--- a/test/transform/resource/messages-delombok/LoggerSlf4jOnNonStaticInnerClass.java.messages
+++ b/test/transform/resource/messages-delombok/LoggerSlf4jOnNonStaticInnerClass.java.messages
@@ -1 +1 @@
-2:9 ERROR @Log is not legal on non-static inner classes. \ No newline at end of file
+2:9 @Log is not legal on non-static inner classes. \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/LoggerSlf4jOnNonType.java.messages b/test/transform/resource/messages-delombok/LoggerSlf4jOnNonType.java.messages
index 9143d4bc..ebc23411 100644
--- a/test/transform/resource/messages-delombok/LoggerSlf4jOnNonType.java.messages
+++ b/test/transform/resource/messages-delombok/LoggerSlf4jOnNonType.java.messages
@@ -1 +1 @@
-2:9 ERROR @Log is legal only on types. \ No newline at end of file
+2:9 @Log is legal only on types. \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/LoggerSlf4jTypes.java.messages b/test/transform/resource/messages-delombok/LoggerSlf4jTypes.java.messages
index ba97e38f..a525dd27 100644
--- a/test/transform/resource/messages-delombok/LoggerSlf4jTypes.java.messages
+++ b/test/transform/resource/messages-delombok/LoggerSlf4jTypes.java.messages
@@ -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. \ No newline at end of file
+1:1 @Log is legal only on classes and enums.
+4:1 @Log is legal only on classes and enums. \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/SetterAlreadyExists.java.messages b/test/transform/resource/messages-delombok/SetterAlreadyExists.java.messages
index 99dd1d25..9cece93c 100644
--- a/test/transform/resource/messages-delombok/SetterAlreadyExists.java.messages
+++ b/test/transform/resource/messages-delombok/SetterAlreadyExists.java.messages
@@ -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
diff --git a/test/transform/resource/messages-delombok/SetterOnMethod.java.messages b/test/transform/resource/messages-delombok/SetterOnMethod.java.messages
index 2df11f97..9473d5b3 100644
--- a/test/transform/resource/messages-delombok/SetterOnMethod.java.messages
+++ b/test/transform/resource/messages-delombok/SetterOnMethod.java.messages
@@ -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.
diff --git a/test/transform/resource/messages-delombok/SetterOnParam.java.messages b/test/transform/resource/messages-delombok/SetterOnParam.java.messages
index a18f1b83..b8c69eca 100644
--- a/test/transform/resource/messages-delombok/SetterOnParam.java.messages
+++ b/test/transform/resource/messages-delombok/SetterOnParam.java.messages
@@ -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.
diff --git a/test/transform/resource/messages-delombok/SetterOnParamAndOnMethod.java.messages b/test/transform/resource/messages-delombok/SetterOnParamAndOnMethod.java.messages
index b247b624..7324f6f3 100644
--- a/test/transform/resource/messages-delombok/SetterOnParamAndOnMethod.java.messages
+++ b/test/transform/resource/messages-delombok/SetterOnParamAndOnMethod.java.messages
@@ -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 \ No newline at end of file
+2:34 incompatible types
+2:54 incompatible types
diff --git a/test/transform/resource/messages-delombok/SimpleTypeResolution.java.messages b/test/transform/resource/messages-delombok/SimpleTypeResolution.java.messages
index 3a345d06..7acd35ed 100644
--- a/test/transform/resource/messages-delombok/SimpleTypeResolution.java.messages
+++ b/test/transform/resource/messages-delombok/SimpleTypeResolution.java.messages
@@ -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
diff --git a/test/transform/resource/messages-delombok/SynchronizedNameNoSuchField.java.messages b/test/transform/resource/messages-delombok/SynchronizedNameNoSuchField.java.messages
index bffd29e6..f282d34d 100644
--- a/test/transform/resource/messages-delombok/SynchronizedNameNoSuchField.java.messages
+++ b/test/transform/resource/messages-delombok/SynchronizedNameNoSuchField.java.messages
@@ -1 +1 @@
-5:9 ERROR The field write does not exist.
+5:9 The field write does not exist.
diff --git a/test/transform/resource/messages-delombok/SynchronizedNameStaticToInstanceRef.java.messages b/test/transform/resource/messages-delombok/SynchronizedNameStaticToInstanceRef.java.messages
index 84336ebb..5d6bc958 100644
--- a/test/transform/resource/messages-delombok/SynchronizedNameStaticToInstanceRef.java.messages
+++ b/test/transform/resource/messages-delombok/SynchronizedNameStaticToInstanceRef.java.messages
@@ -1 +1 @@
-5:9 ERROR non-static variable read cannot be referenced from a static context \ No newline at end of file
+5:9 non-static variable read cannot be referenced from a static context \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/ValErrors.java.messages b/test/transform/resource/messages-delombok/ValErrors.java.messages
index bd59ad3b..887b8c21 100644
--- a/test/transform/resource/messages-delombok/ValErrors.java.messages
+++ b/test/transform/resource/messages-delombok/ValErrors.java.messages
@@ -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 { ... })
diff --git a/test/transform/resource/messages-delombok/ValInBasicFor.java.messages b/test/transform/resource/messages-delombok/ValInBasicFor.java.messages
index 3f7ada73..b69a4a13 100644
--- a/test/transform/resource/messages-delombok/ValInBasicFor.java.messages
+++ b/test/transform/resource/messages-delombok/ValInBasicFor.java.messages
@@ -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
diff --git a/test/transform/resource/messages-delombok/WitherAlreadyExists.java.messages b/test/transform/resource/messages-delombok/WitherAlreadyExists.java.messages
index 4a5dd9d1..b68f6398 100644
--- a/test/transform/resource/messages-delombok/WitherAlreadyExists.java.messages
+++ b/test/transform/resource/messages-delombok/WitherAlreadyExists.java.messages
@@ -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
diff --git a/test/transform/resource/messages-delombok/WitherOnStatic.java.messages b/test/transform/resource/messages-delombok/WitherOnStatic.java.messages
index e9e94e5f..9dd69e75 100644
--- a/test/transform/resource/messages-delombok/WitherOnStatic.java.messages
+++ b/test/transform/resource/messages-delombok/WitherOnStatic.java.messages
@@ -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.
diff --git a/test/transform/resource/messages-delombok/WitherWithDollar.java.messages b/test/transform/resource/messages-delombok/WitherWithDollar.java.messages
index 34f34969..74eeabba 100644
--- a/test/transform/resource/messages-delombok/WitherWithDollar.java.messages
+++ b/test/transform/resource/messages-delombok/WitherWithDollar.java.messages
@@ -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 $.
diff --git a/test/transform/resource/messages-ecj/Accessors.java.messages b/test/transform/resource/messages-ecj/Accessors.java.messages
index 88594029..3e6bbd69 100644
--- a/test/transform/resource/messages-ecj/Accessors.java.messages
+++ b/test/transform/resource/messages-ecj/Accessors.java.messages
@@ -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.
diff --git a/test/transform/resource/messages-ecj/ConflictingStaticConstructorNames.java.messages b/test/transform/resource/messages-ecj/ConflictingStaticConstructorNames.java.messages
index ecbf4a61..50f2e97f 100644
--- a/test/transform/resource/messages-ecj/ConflictingStaticConstructorNames.java.messages
+++ b/test/transform/resource/messages-ecj/ConflictingStaticConstructorNames.java.messages
@@ -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.
diff --git a/test/transform/resource/messages-ecj/EqualsAndHashCodeWithExistingMethods.java.messages b/test/transform/resource/messages-ecj/EqualsAndHashCodeWithExistingMethods.java.messages
index 3ad31311..db144316 100644
--- a/test/transform/resource/messages-ecj/EqualsAndHashCodeWithExistingMethods.java.messages
+++ b/test/transform/resource/messages-ecj/EqualsAndHashCodeWithExistingMethods.java.messages
@@ -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).
diff --git a/test/transform/resource/messages-ecj/FieldDefaultsNoop.java.messages b/test/transform/resource/messages-ecj/FieldDefaultsNoop.java.messages
index 4dffedef..5903679b 100644
--- a/test/transform/resource/messages-ecj/FieldDefaultsNoop.java.messages
+++ b/test/transform/resource/messages-ecj/FieldDefaultsNoop.java.messages
@@ -1 +1 @@
-1 error This does nothing; provide either level or makeFinal or both. \ No newline at end of file
+1:0 This does nothing; provide either level or makeFinal or both. \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/GetterAlreadyExists.java.messages b/test/transform/resource/messages-ecj/GetterAlreadyExists.java.messages
index 86415168..ae62a1fb 100644
--- a/test/transform/resource/messages-ecj/GetterAlreadyExists.java.messages
+++ b/test/transform/resource/messages-ecj/GetterAlreadyExists.java.messages
@@ -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 \ No newline at end of file
+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
diff --git a/test/transform/resource/messages-ecj/GetterBoolean.java.messages b/test/transform/resource/messages-ecj/GetterBoolean.java.messages
index 51d9dd6e..8ae086f6 100644
--- a/test/transform/resource/messages-ecj/GetterBoolean.java.messages
+++ b/test/transform/resource/messages-ecj/GetterBoolean.java.messages
@@ -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)
diff --git a/test/transform/resource/messages-ecj/GetterLazyInvalid.java.messages b/test/transform/resource/messages-ecj/GetterLazyInvalid.java.messages
index 25641930..9ecf0fc0 100644
--- a/test/transform/resource/messages-ecj/GetterLazyInvalid.java.messages
+++ b/test/transform/resource/messages-ecj/GetterLazyInvalid.java.messages
@@ -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.
diff --git a/test/transform/resource/messages-ecj/GetterOnMethod.java.messages b/test/transform/resource/messages-ecj/GetterOnMethod.java.messages
index 24e00370..4b240da0 100644
--- a/test/transform/resource/messages-ecj/GetterOnMethod.java.messages
+++ b/test/transform/resource/messages-ecj/GetterOnMethod.java.messages
@@ -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. \ No newline at end of file
+6:0 'onMethod' is not supported for @Getter on a type.
+11:0 'onMethod' is not supported for @Getter on a type. \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/LoggerSlf4jAlreadyExists.java.messages b/test/transform/resource/messages-ecj/LoggerSlf4jAlreadyExists.java.messages
index f03c7660..859e29d8 100644
--- a/test/transform/resource/messages-ecj/LoggerSlf4jAlreadyExists.java.messages
+++ b/test/transform/resource/messages-ecj/LoggerSlf4jAlreadyExists.java.messages
@@ -1 +1 @@
-1 warning Field 'log' already exists.
+1:0 Field 'log' already exists.
diff --git a/test/transform/resource/messages-ecj/LoggerSlf4jOnNonStaticInnerClass.java.messages b/test/transform/resource/messages-ecj/LoggerSlf4jOnNonStaticInnerClass.java.messages
index e0bbdb2a..570a169b 100644
--- a/test/transform/resource/messages-ecj/LoggerSlf4jOnNonStaticInnerClass.java.messages
+++ b/test/transform/resource/messages-ecj/LoggerSlf4jOnNonStaticInnerClass.java.messages
@@ -1 +1 @@
-2:9 ERROR @Log is not legal on non-static inner classes. \ No newline at end of file
+2:9 @Log is not legal on non-static inner classes. \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/LoggerSlf4jOnNonType.java.messages b/test/transform/resource/messages-ecj/LoggerSlf4jOnNonType.java.messages
index 5fff2629..b6848135 100644
--- a/test/transform/resource/messages-ecj/LoggerSlf4jOnNonType.java.messages
+++ b/test/transform/resource/messages-ecj/LoggerSlf4jOnNonType.java.messages
@@ -1 +1 @@
-2 error The annotation @Slf4j is disallowed for this location \ No newline at end of file
+2:30 The annotation @Slf4j is disallowed for this location
diff --git a/test/transform/resource/messages-ecj/LoggerSlf4jTypes.java.messages b/test/transform/resource/messages-ecj/LoggerSlf4jTypes.java.messages
index e23aa524..b9f8b63f 100644
--- a/test/transform/resource/messages-ecj/LoggerSlf4jTypes.java.messages
+++ b/test/transform/resource/messages-ecj/LoggerSlf4jTypes.java.messages
@@ -1,2 +1,2 @@
-1 error @Slf4j is legal only on classes and enums.
-4 error @Slf4j is legal only on classes and enums. \ No newline at end of file
+1:0 @Slf4j is legal only on classes and enums.
+4:67 @Slf4j is legal only on classes and enums.
diff --git a/test/transform/resource/messages-ecj/SetterAlreadyExists.java.messages b/test/transform/resource/messages-ecj/SetterAlreadyExists.java.messages
index d33024db..5fc0a365 100644
--- a/test/transform/resource/messages-ecj/SetterAlreadyExists.java.messages
+++ b/test/transform/resource/messages-ecj/SetterAlreadyExists.java.messages
@@ -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 \ No newline at end of file
+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
diff --git a/test/transform/resource/messages-ecj/SetterOnMethod.java.messages b/test/transform/resource/messages-ecj/SetterOnMethod.java.messages
index 608489ce..ecfa3f69 100644
--- a/test/transform/resource/messages-ecj/SetterOnMethod.java.messages
+++ b/test/transform/resource/messages-ecj/SetterOnMethod.java.messages
@@ -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. \ No newline at end of file
+6:0 'onMethod' is not supported for @Setter on a type.
+11:0 'onMethod' is not supported for @Setter on a type. \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/SetterOnParam.java.messages b/test/transform/resource/messages-ecj/SetterOnParam.java.messages
index d067b156..7d0c4a1e 100644
--- a/test/transform/resource/messages-ecj/SetterOnParam.java.messages
+++ b/test/transform/resource/messages-ecj/SetterOnParam.java.messages
@@ -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. \ No newline at end of file
+6:0 'onParam' is not supported for @Setter on a type.
+11:0 'onParam' is not supported for @Setter on a type. \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/SimpleTypeResolution.java.messages b/test/transform/resource/messages-ecj/SimpleTypeResolution.java.messages
index 2d49e9a9..eb33b0df 100644
--- a/test/transform/resource/messages-ecj/SimpleTypeResolution.java.messages
+++ b/test/transform/resource/messages-ecj/SimpleTypeResolution.java.messages
@@ -1 +1 @@
-2 error Getter cannot be resolved to a type \ No newline at end of file
+2:35 Getter cannot be resolved to a type
diff --git a/test/transform/resource/messages-ecj/SynchronizedName.java.messages b/test/transform/resource/messages-ecj/SynchronizedName.java.messages
index 4c428aac..0ad3be0a 100644
--- a/test/transform/resource/messages-ecj/SynchronizedName.java.messages
+++ b/test/transform/resource/messages-ecj/SynchronizedName.java.messages
@@ -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
diff --git a/test/transform/resource/messages-ecj/SynchronizedNameNoSuchField.java.messages b/test/transform/resource/messages-ecj/SynchronizedNameNoSuchField.java.messages
index f16d071a..b07f020c 100644
--- a/test/transform/resource/messages-ecj/SynchronizedNameNoSuchField.java.messages
+++ b/test/transform/resource/messages-ecj/SynchronizedNameNoSuchField.java.messages
@@ -1 +1 @@
-5 error The field write does not exist.
+5:120 The field write does not exist.
diff --git a/test/transform/resource/messages-ecj/SynchronizedNameStaticToInstanceRef.java.messages b/test/transform/resource/messages-ecj/SynchronizedNameStaticToInstanceRef.java.messages
index c207cd70..834877ef 100644
--- a/test/transform/resource/messages-ecj/SynchronizedNameStaticToInstanceRef.java.messages
+++ b/test/transform/resource/messages-ecj/SynchronizedNameStaticToInstanceRef.java.messages
@@ -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
diff --git a/test/transform/resource/messages-ecj/ValErrors.java.messages b/test/transform/resource/messages-ecj/ValErrors.java.messages
index 0a23326c..fda58094 100644
--- a/test/transform/resource/messages-ecj/ValErrors.java.messages
+++ b/test/transform/resource/messages-ecj/ValErrors.java.messages
@@ -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 { ... })
diff --git a/test/transform/resource/messages-ecj/ValInBasicFor.java.messages b/test/transform/resource/messages-ecj/ValInBasicFor.java.messages
index 23ffd6fd..068d72b9 100644
--- a/test/transform/resource/messages-ecj/ValInBasicFor.java.messages
+++ b/test/transform/resource/messages-ecj/ValInBasicFor.java.messages
@@ -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 \ No newline at end of file
+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
diff --git a/test/transform/resource/messages-ecj/ValRawType.java.messages b/test/transform/resource/messages-ecj/ValRawType.java.messages
index b2b8d753..b7669ede 100644
--- a/test/transform/resource/messages-ecj/ValRawType.java.messages
+++ b/test/transform/resource/messages-ecj/ValRawType.java.messages
@@ -1 +1 @@
-13 warning List is a raw type. References to generic type List<E> should be parameterized \ No newline at end of file
+13:260 List is a raw type. References to generic type List<E> should be parameterized
diff --git a/test/transform/resource/messages-ecj/WitherAlreadyExists.java.messages b/test/transform/resource/messages-ecj/WitherAlreadyExists.java.messages
index bba8913b..87459eb2 100644
--- a/test/transform/resource/messages-ecj/WitherAlreadyExists.java.messages
+++ b/test/transform/resource/messages-ecj/WitherAlreadyExists.java.messages
@@ -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
diff --git a/test/transform/resource/messages-ecj/WitherOnStatic.java.messages b/test/transform/resource/messages-ecj/WitherOnStatic.java.messages
index 5b52d54f..72e39f62 100644
--- a/test/transform/resource/messages-ecj/WitherOnStatic.java.messages
+++ b/test/transform/resource/messages-ecj/WitherOnStatic.java.messages
@@ -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.
diff --git a/test/transform/resource/messages-ecj/WitherWithDollar.java.messages b/test/transform/resource/messages-ecj/WitherWithDollar.java.messages
index e55530e3..93203dbb 100644
--- a/test/transform/resource/messages-ecj/WitherWithDollar.java.messages
+++ b/test/transform/resource/messages-ecj/WitherWithDollar.java.messages
@@ -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 $.
diff --git a/test/transform/resource/messages-idempotent/SimpleTypeResolution.java.messages b/test/transform/resource/messages-idempotent/SimpleTypeResolution.java.messages
index 3a345d06..7acd35ed 100644
--- a/test/transform/resource/messages-idempotent/SimpleTypeResolution.java.messages
+++ b/test/transform/resource/messages-idempotent/SimpleTypeResolution.java.messages
@@ -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
diff --git a/test/transform/resource/messages-idempotent/SynchronizedNameStaticToInstanceRef.java.messages b/test/transform/resource/messages-idempotent/SynchronizedNameStaticToInstanceRef.java.messages
index c34e29f6..ed3eccb1 100644
--- a/test/transform/resource/messages-idempotent/SynchronizedNameStaticToInstanceRef.java.messages
+++ b/test/transform/resource/messages-idempotent/SynchronizedNameStaticToInstanceRef.java.messages
@@ -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
diff --git a/test/transform/resource/messages-idempotent/ValErrors.java.messages b/test/transform/resource/messages-idempotent/ValErrors.java.messages
index 6f666511..9bee37d4 100644
--- a/test/transform/resource/messages-idempotent/ValErrors.java.messages
+++ b/test/transform/resource/messages-idempotent/ValErrors.java.messages
@@ -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>
diff --git a/test/transform/resource/messages-idempotent/ValInBasicFor.java.messages b/test/transform/resource/messages-idempotent/ValInBasicFor.java.messages
index 133baa64..313a33c0 100644
--- a/test/transform/resource/messages-idempotent/ValInBasicFor.java.messages
+++ b/test/transform/resource/messages-idempotent/ValInBasicFor.java.messages
@@ -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