diff options
author | cushon <cushon@google.com> | 2018-02-02 19:42:52 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-02 19:44:27 -0800 |
commit | 5dee3ea3141c14f23951c0d0e4913c666b419c3f (patch) | |
tree | 0e42d911ea2cafc02e5829bff0a706d8d3436ba6 /src/java_tools/buildjar | |
parent | f972c87c515f4b819bb6e7baca8a64b56d79d5f1 (diff) |
Don't suppress non-NOTE diagnostics for failed builds
To avoid hiding compiler.warn.sun.proprietary warnings when running with -Werror.
Fixes bazelbuild/bazel#4564
PiperOrigin-RevId: 184367653
Diffstat (limited to 'src/java_tools/buildjar')
-rw-r--r-- | src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java index dd2a14105d..20b8689392 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavacMain.java @@ -43,6 +43,7 @@ import java.nio.file.Path; import java.util.Collection; import java.util.List; import java.util.Objects; +import javax.tools.Diagnostic; import javax.tools.StandardLocation; /** @@ -129,7 +130,7 @@ public class BlazeJavacMain { } errWriter.flush(); return new BlazeJavacResult( - ok, filterDiagnostics(diagnostics.build()), errOutput.toString(), compiler); + ok, filterDiagnostics(ok, diagnostics.build()), errOutput.toString(), compiler); } private static final ImmutableSet<String> IGNORED_DIAGNOSTIC_CODES = @@ -147,14 +148,22 @@ public class BlazeJavacMain { "compiler.warn.sun.proprietary"); private static ImmutableList<FormattedDiagnostic> filterDiagnostics( - ImmutableList<FormattedDiagnostic> diagnostics) { - // TODO(cushon): toImmutableList - ImmutableList.Builder<FormattedDiagnostic> result = ImmutableList.builder(); - diagnostics + boolean ok, ImmutableList<FormattedDiagnostic> diagnostics) { + return diagnostics .stream() - .filter(d -> !IGNORED_DIAGNOSTIC_CODES.contains(d.getCode())) - .forEach(result::add); - return result.build(); + .filter(d -> shouldReportDiagnostic(ok, d)) + .collect(toImmutableList()); + } + + private static boolean shouldReportDiagnostic(boolean ok, FormattedDiagnostic diagnostic) { + if (!IGNORED_DIAGNOSTIC_CODES.contains(diagnostic.getCode())) { + return true; + } + if (!ok && diagnostic.getKind() != Diagnostic.Kind.NOTE) { + // show compiler.warn.sun.proprietary in case we're running with -Werror + return true; + } + return false; } /** Processes Plugin-specific arguments and removes them from the args array. */ |