aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 2b4da1b4a0..d52b9ed16e 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -2258,6 +2258,9 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
if (!Iterables.isEmpty(errorInfo.getCycleInfo())) {
exc = new TargetParsingException("cycles detected during target parsing");
getCyclesReporter().reportCycles(errorInfo.getCycleInfo(), key, eventHandler);
+ // Fallback: we don't know which patterns failed, specifically, so we report the entire
+ // set as being in error.
+ eventHandler.post(PatternExpandingError.failed(targetPatterns, exc.getMessage()));
} else {
// TargetPatternPhaseFunction never directly throws. Thus, the only way
// evalResult.hasError() && keepGoing can hold is if there are cycles, which is handled
@@ -2270,8 +2273,12 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
(e instanceof TargetParsingException)
? (TargetParsingException) e
: new TargetParsingException(e.getMessage(), e);
+ if (!(e instanceof TargetParsingException)) {
+ // If it's a TargetParsingException, then the TargetPatternPhaseFunction has already
+ // reported the error, so we don't need to report it again.
+ eventHandler.post(PatternExpandingError.failed(targetPatterns, exc.getMessage()));
+ }
}
- eventHandler.post(PatternExpandingError.failed(targetPatterns, exc.getMessage()));
throw exc;
}
long timeMillis = timer.stop().elapsed(TimeUnit.MILLISECONDS);