Rule classes cannot request duplicate toolchains.
PiperOrigin-RevId: 167861778
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index 3a222db..dcf6092 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -59,6 +59,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -483,7 +484,7 @@
private boolean supportsConstraintChecking = true;
private final Map<String, Attribute> attributes = new LinkedHashMap<>();
- private final List<Label> requiredToolchains = new ArrayList<>();
+ private final Set<Label> requiredToolchains = new HashSet<>();
/**
* Constructs a new {@code RuleClassBuilder} using all attributes from all
@@ -1115,7 +1116,7 @@
*/
private final boolean supportsConstraintChecking;
- private final ImmutableList<Label> requiredToolchains;
+ private final ImmutableSet<Label> requiredToolchains;
/**
* Constructs an instance of RuleClass whose name is 'name', attributes are 'attributes'. The
@@ -1163,7 +1164,7 @@
String ruleDefinitionEnvironmentHashCode,
ConfigurationFragmentPolicy configurationFragmentPolicy,
boolean supportsConstraintChecking,
- List<Label> requiredToolchains,
+ Set<Label> requiredToolchains,
Attribute... attributes) {
this.name = name;
this.isSkylark = isSkylark;
@@ -1192,7 +1193,7 @@
this.outputsDefaultExecutable = outputsDefaultExecutable;
this.configurationFragmentPolicy = configurationFragmentPolicy;
this.supportsConstraintChecking = supportsConstraintChecking;
- this.requiredToolchains = ImmutableList.copyOf(requiredToolchains);
+ this.requiredToolchains = ImmutableSet.copyOf(requiredToolchains);
// Create the index and collect non-configurable attributes.
int index = 0;
@@ -2002,7 +2003,7 @@
return outputsDefaultExecutable;
}
- public ImmutableList<Label> getRequiredToolchains() {
+ public ImmutableSet<Label> getRequiredToolchains() {
return requiredToolchains;
}