diff options
author | John Cater <jcater@google.com> | 2018-04-12 08:43:28 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-12 08:45:12 -0700 |
commit | c36d4e87abb89c8755631de1377a9cf44bde30d6 (patch) | |
tree | acbe863827498a4281b41016a44a0d4c4b2762dd /src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java | |
parent | 073ea095a6c6a826ccdbbce1b213de47115e701a (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.java | 14 |
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(); } |