Skip to content

Commit f4541e8

Browse files
committed
Remove "error: " prefixes from javac error messages
Before, "warning: " prefixes were already removed. This change brings both warnings and errors in sync with regard to message processing. Some tests had to be slightly adjusted to reflect the now cleaner error messages.
1 parent 5c6eafd commit f4541e8

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java

+19-8
Original file line numberDiff line numberDiff line change
@@ -969,11 +969,14 @@ static CompilerMessage parseModernError(int exitCode, String error) {
969969
final StringBuilder msgBuffer = new StringBuilder();
970970
String msg = tokens.nextToken(EOL).substring(2);
971971

972-
// Remove the 'warning: ' prefix
973-
final String warnPrefix = getWarningPrefix(msg);
974-
if (warnPrefix != null) {
972+
// Remove "error: " and "warning: " prefixes
973+
String prefix;
974+
if ((prefix = getErrorPrefix(msg)) != null) {
975+
messageKind = ERROR;
976+
msg = msg.substring(prefix.length());
977+
} else if ((prefix = getWarningPrefix(msg)) != null) {
975978
messageKind = WARNING;
976-
msg = msg.substring(warnPrefix.length());
979+
msg = msg.substring(prefix.length());
977980
}
978981
msgBuffer.append(msg).append(EOL);
979982

@@ -1012,15 +1015,23 @@ static CompilerMessage parseModernError(int exitCode, String error) {
10121015
}
10131016
}
10141017

1015-
private static String getWarningPrefix(String msg) {
1016-
for (String warningPrefix : WARNING_PREFIXES) {
1017-
if (msg.startsWith(warningPrefix)) {
1018-
return warningPrefix;
1018+
private static String getMessagePrefix(String message, String[] prefixes) {
1019+
for (String prefix : prefixes) {
1020+
if (message.startsWith(prefix)) {
1021+
return prefix;
10191022
}
10201023
}
10211024
return null;
10221025
}
10231026

1027+
private static String getWarningPrefix(String message) {
1028+
return getMessagePrefix(message, WARNING_PREFIXES);
1029+
}
1030+
1031+
private static String getErrorPrefix(String message) {
1032+
return getMessagePrefix(message, ERROR_PREFIXES);
1033+
}
1034+
10241035
/**
10251036
* put args into a temp file to be referenced using the @ option in javac command line
10261037
*

plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/ErrorMessageParserTest.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -753,8 +753,7 @@ public void testJava7Error() throws Exception {
753753

754754
assertThat(
755755
message1.getMessage(),
756-
is("error: cannot find symbol" + EOL + " symbol: class Properties" + EOL
757-
+ " location: class Error"));
756+
is("cannot find symbol" + EOL + " symbol: class Properties" + EOL + " location: class Error"));
758757

759758
assertThat(message1.getStartColumn(), is(16));
760759

@@ -770,8 +769,7 @@ public void testJava7Error() throws Exception {
770769

771770
assertThat(
772771
message2.getMessage(),
773-
is("error: cannot find symbol" + EOL + " symbol: class Properties" + EOL
774-
+ " location: class Error"));
772+
is("cannot find symbol" + EOL + " symbol: class Properties" + EOL + " location: class Error"));
775773

776774
assertThat(message2.getStartColumn(), is(35));
777775

@@ -1259,7 +1257,7 @@ public void testWarningFollowedByBadSourceFileError() throws Exception {
12591257
private void validateBadSourceFile(CompilerMessage message) {
12601258
assertThat("Is an Error", message.getKind(), is(CompilerMessage.Kind.ERROR));
12611259
assertThat("On Correct File", message.getFile(), is("/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java"));
1262-
assertThat("Message starts with access Error", message.getMessage(), startsWith("error: cannot access Cls2"));
1260+
assertThat("Message starts with access Error", message.getMessage(), startsWith("cannot access Cls2"));
12631261
}
12641262

12651263
private static void assertEquivalent(CompilerMessage expected, CompilerMessage actual) {

0 commit comments

Comments
 (0)