aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2017-09-25 10:58:41 -0400
committerGravatar John Cater <jcater@google.com>2017-09-25 12:02:51 -0400
commit77112c6ee7cc98e3e2732e54bee3f45efc5179bf (patch)
treea94b8810f4dd79357dac70bcbb11ad96dba64ad5 /src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java
parent66ab13fad654881ed3caccde7c9e0422b222e32e (diff)
Update RegisteredToolchainsFunction and ToolchainUtil to check values for errors even if not all values are present.
Fixes #3751. Change-Id: I92fd7527384800beca80b9daac58f3a7760268b2 PiperOrigin-RevId: 169907526
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java
index 8bb828c9b6..b7d64927bb 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java
@@ -93,17 +93,21 @@ public class RegisteredToolchainsFunction implements SkyFunction {
Map<SkyKey, ValueOrException<ConfiguredValueCreationException>> values =
env.getValuesOrThrow(keys, ConfiguredValueCreationException.class);
- if (env.valuesMissing()) {
- return null;
- }
ImmutableList.Builder<DeclaredToolchainInfo> toolchains = new ImmutableList.Builder<>();
+ boolean valuesMissing = false;
for (SkyKey key : keys) {
ConfiguredTargetKey configuredTargetKey = (ConfiguredTargetKey) key.argument();
Label toolchainLabel = configuredTargetKey.getLabel();
try {
+ ValueOrException<ConfiguredValueCreationException> valueOrException = values.get(key);
+ if (valueOrException.get() == null) {
+ valuesMissing = true;
+ continue;
+ }
ConfiguredTarget target =
- ((ConfiguredTargetValue) values.get(key).get()).getConfiguredTarget();
+ ((ConfiguredTargetValue) valueOrException.get()).getConfiguredTarget();
DeclaredToolchainInfo toolchainInfo = target.getProvider(DeclaredToolchainInfo.class);
+
if (toolchainInfo == null) {
throw new RegisteredToolchainsFunctionException(
new InvalidToolchainLabelException(toolchainLabel), Transience.PERSISTENT);
@@ -114,6 +118,10 @@ public class RegisteredToolchainsFunction implements SkyFunction {
new InvalidToolchainLabelException(toolchainLabel, e), Transience.PERSISTENT);
}
}
+
+ if (valuesMissing) {
+ return null;
+ }
return toolchains.build();
}