aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2018-04-12 08:43:28 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-12 08:45:12 -0700
commitc36d4e87abb89c8755631de1377a9cf44bde30d6 (patch)
treeacbe863827498a4281b41016a44a0d4c4b2762dd /src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java
parent073ea095a6c6a826ccdbbce1b213de47115e701a (diff)
Fix error handling for target pattern expansion
... in register_toolchains and register_execution_platforms. Fixes #5000. Change-Id: Iac06b3cb79746ea720de8835b7bd1abb19149526 Closes #5001. PiperOrigin-RevId: 192615586
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java
index e2317890e7..40d6701c33 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java
@@ -397,23 +397,27 @@ public class ToolchainUtil {
}
// Then, resolve the patterns.
- ImmutableList.Builder<Label> labels = new ImmutableList.Builder<>();
Map<SkyKey, ValueOrException<TargetParsingException>> resolvedPatterns =
env.getValuesOrThrow(patternKeys, TargetParsingException.class);
- if (env.valuesMissing()) {
- return null;
- }
+ boolean valuesMissing = env.valuesMissing();
+ ImmutableList.Builder<Label> labels = valuesMissing ? null : new ImmutableList.Builder<>();
for (TargetPatternValue.TargetPatternKey pattern : patternKeys) {
TargetPatternValue value;
try {
value = (TargetPatternValue) resolvedPatterns.get(pattern).get();
- labels.addAll(value.getTargets().getTargets());
+ if (!valuesMissing && value != null) {
+ labels.addAll(value.getTargets().getTargets());
+ }
} catch (TargetParsingException e) {
throw new InvalidTargetPatternException(pattern.getPattern(), e);
}
}
+ if (valuesMissing) {
+ return null;
+ }
+
return labels.build();
}