From d424dee0ea34bb0b80803581d3234be84b3ccb1d Mon Sep 17 00:00:00 2001 From: cushon Date: Wed, 25 Jul 2018 17:41:24 -0700 Subject: Internal change PiperOrigin-RevId: 206085005 --- .../devtools/build/buildjar/javac/BlazeJavacMain.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/java_tools') 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 f4bb407975..e03a3f584f 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 @@ -17,6 +17,7 @@ package com.google.devtools.build.buildjar.javac; import static com.google.common.collect.ImmutableList.toImmutableList; import static com.google.common.collect.Iterables.getOnlyElement; import static java.nio.charset.StandardCharsets.UTF_8; +import static java.util.Comparator.comparing; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; @@ -130,7 +131,7 @@ public class BlazeJavacMain { } errWriter.flush(); return new BlazeJavacResult( - ok, filterDiagnostics(ok, diagnostics.build()), errOutput.toString(), compiler); + ok, filterDiagnostics(diagnostics.build()), errOutput.toString(), compiler); } private static final ImmutableSet IGNORED_DIAGNOSTIC_CODES = @@ -148,19 +149,23 @@ public class BlazeJavacMain { "compiler.warn.sun.proprietary"); private static ImmutableList filterDiagnostics( - boolean ok, ImmutableList diagnostics) { + ImmutableList diagnostics) { + boolean werror = + diagnostics.stream().anyMatch(d -> d.getCode().equals("compiler.err.warnings.and.werror")); return diagnostics .stream() - .filter(d -> shouldReportDiagnostic(ok, d)) + .filter(d -> shouldReportDiagnostic(werror, d)) + // Print errors last to make them more visible. + .sorted(comparing(FormattedDiagnostic::getKind).reversed()) .collect(toImmutableList()); } - private static boolean shouldReportDiagnostic(boolean ok, FormattedDiagnostic diagnostic) { + private static boolean shouldReportDiagnostic(boolean werror, 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 + // show compiler.warn.sun.proprietary if we're running with -Werror + if (werror && diagnostic.getKind() != Diagnostic.Kind.NOTE) { return true; } return false; -- cgit v1.2.3