Do not crash when aspects provide duplicate things.
--
MOS_MIGRATED_REVID=138860974
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupProvider.java
index 113fa3f..d11e309 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupProvider.java
@@ -19,6 +19,7 @@
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Sets;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.analysis.MergedConfiguredTarget.DuplicateException;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -124,7 +125,8 @@
* @param providers providers to merge {@code this} with.
*/
@Nullable
- public static OutputGroupProvider merge(List<OutputGroupProvider> providers) {
+ public static OutputGroupProvider merge(List<OutputGroupProvider> providers)
+ throws DuplicateException {
if (providers.size() == 0) {
return null;
}
@@ -137,7 +139,8 @@
for (OutputGroupProvider provider : providers) {
for (String outputGroup : provider.outputGroups.keySet()) {
if (!seenGroups.add(outputGroup)) {
- throw new IllegalStateException("Output group " + outputGroup + " provided twice");
+ throw new DuplicateException(
+ "Output group " + outputGroup + " provided twice");
}
resultBuilder.put(outputGroup, provider.getOutputGroup(outputGroup));