diff options
Diffstat (limited to 'src/java_tools')
4 files changed, 25 insertions, 4 deletions
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavaCompiler.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavaCompiler.java index d5db1e5fc4..704cc262c0 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavaCompiler.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/BlazeJavaCompiler.java @@ -82,12 +82,12 @@ public class BlazeJavaCompiler extends JavaCompiler { public Env<AttrContext> attribute(Env<AttrContext> env) { Env<AttrContext> result = super.attribute(env); // don't run plugins if there were compilation errors - if (errorCount() > 0) { - return result; - } + boolean errors = errorCount() > 0; // Iterate over all plugins, calling their postAttribute methods for (BlazeJavaCompilerPlugin plugin : plugins) { - plugin.postAttribute(result); + if (!errors || plugin.runOnAttributionErrors()) { + plugin.postAttribute(result); + } } return result; diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/BlazeJavaCompilerPlugin.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/BlazeJavaCompilerPlugin.java index b962434399..be61a1a21b 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/BlazeJavaCompilerPlugin.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/BlazeJavaCompilerPlugin.java @@ -90,4 +90,9 @@ public abstract class BlazeJavaCompilerPlugin { this.log = log; this.compiler = compiler; } + + /** Returns true if the plugin should run on compilations with attribution errors. */ + public boolean runOnAttributionErrors() { + return false; + } } diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java index 6319df0c28..b7491a564c 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java @@ -72,6 +72,7 @@ public final class DependencyModule { private final String targetLabel; private final Path outputDepsProtoFile; private final Set<Path> usedClasspath; + private boolean hasMissingTargets; private final Map<Path, Dependency> explicitDependenciesMap; private final Map<Path, Dependency> implicitDependenciesMap; private final ImmutableSet<Path> platformJars; @@ -223,6 +224,15 @@ public final class DependencyModule { return strictClasspathMode; } + void setHasMissingTargets() { + hasMissingTargets = true; + } + + /** Returns true if any missing transitive dependencies were reported. */ + public boolean hasMissingTargets() { + return hasMissingTargets; + } + /** * Computes a reduced compile-time classpath from the union of direct dependencies and their * dependencies, as listed in the associated .deps artifacts. diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java index ca8d007065..60ec10c581 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java @@ -202,6 +202,7 @@ public final class StrictJavaDepsPlugin extends BlazeJavaCompilerPlugin { .collect(toImmutableSet()); errWriter.print( dependencyModule.getFixMessage().get(canonicalizedMissing, canonicalizedLabel)); + dependencyModule.setHasMissingTargets(); } } @@ -527,4 +528,9 @@ public final class StrictJavaDepsPlugin extends BlazeJavaCompilerPlugin { return true; } + + @Override + public boolean runOnAttributionErrors() { + return true; + } } |