Do not crash when aspects provide duplicate things.
--
MOS_MIGRATED_REVID=138860974
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index ba84c5b..0b7c911 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -46,6 +46,7 @@
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.rules.AliasProvider;
import com.google.devtools.build.lib.skyframe.AspectValue.AspectKey;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.ConfiguredTargetFunctionException;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.ConfiguredValueCreationException;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.DependencyEvaluationException;
import com.google.devtools.build.lib.skyframe.SkyframeExecutor.BuildViewProvider;
@@ -231,17 +232,21 @@
return null;
}
- OrderedSetMultimap<Attribute, ConfiguredTarget> depValueMap =
- ConfiguredTargetFunction.computeDependencies(
- env,
- resolver,
- originalTargetAndAspectConfiguration,
- aspect,
- configConditions,
- ruleClassProvider,
- view.getHostConfiguration(originalTargetAndAspectConfiguration.getConfiguration()),
- transitivePackages,
- transitiveRootCauses);
+ OrderedSetMultimap<Attribute, ConfiguredTarget> depValueMap;
+ try {
+ depValueMap = ConfiguredTargetFunction.computeDependencies(
+ env,
+ resolver,
+ originalTargetAndAspectConfiguration,
+ aspect,
+ configConditions,
+ ruleClassProvider,
+ view.getHostConfiguration(originalTargetAndAspectConfiguration.getConfiguration()),
+ transitivePackages,
+ transitiveRootCauses);
+ } catch (ConfiguredTargetFunctionException e) {
+ throw new AspectCreationException(e.getMessage());
+ }
if (depValueMap == null) {
return null;
}