Change ruleContext.hasError() to reflect even suppressed errors
This makes error-checking logic more consistent, even under --allow_analysis_failures. This also requires some changes to target factories to ensure they are aware of allow_analysis_failures mode, and will propagate non-null error-messaging targets in cases of this mode.
Fixes https://github.com/bazelbuild/bazel/issues/8234
RELNOTES: None.
PiperOrigin-RevId: 254413823
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index 63bf4f5..acbc9bd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -477,7 +477,12 @@
.setToolchainContext(toolchainContext)
.setConstraintSemantics(ruleClassProvider.getConstraintSemantics())
.build();
- if (ruleContext.hasErrors()) {
+
+ // If allowing analysis failures, targets should be created as normal as possible, and errors
+ // will be propagated via a hook elsewhere as AnalysisFailureInfo.
+ boolean allowAnalysisFailures = ruleContext.getConfiguration().allowAnalysisFailures();
+
+ if (ruleContext.hasErrors() && !allowAnalysisFailures) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
index 910c5a9..d7dfa0f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java
@@ -101,7 +101,7 @@
if (ruleContext.getConfiguration().enforceConstraints()) {
checkConstraints();
}
- if (ruleContext.hasErrors()) {
+ if (ruleContext.hasErrors() && !allowAnalysisFailures) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 72549d1..e8a820c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -377,7 +377,7 @@
@Override
public boolean hasErrors() {
- return getAnalysisEnvironment().hasErrors();
+ return reporter.hasErrors();
}
/**