aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2015-04-13 19:58:23 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2015-04-14 14:31:21 +0000
commita4fc877f1734d95d6e9f38f1f44add9f0b82d613 (patch)
tree0b9b67b0e09530afd1609b6d3c16eed331a8df72 /src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
parent73055bed3eb4c06d7eb87c81bd07de2d16d477e7 (diff)
Configurable attributes: support embeddable selects. With this
change, the following syntax: deps = [':always'] + select({':a': [':adep'], ':b': [':bdep']}) or deps = select({':a': [':adep'], ':b': [':bdep']}) + select({':c': [':cdep'], ':d': [':ddep']}) works. -- MOS_MIGRATED_REVID=91016337
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/RuleClass.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/RuleClass.java12
1 files changed, 4 insertions, 8 deletions
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 d265a44a6a..4521b3304c 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
@@ -1278,13 +1278,9 @@ public final class RuleClass {
Set<Label> configLabels = new LinkedHashSet<>();
for (Attribute attr : rule.getAttributes()) {
- Type.Selector<?> selector = attributes.getSelector(attr.getName(), attr.getType());
- if (selector != null) {
- for (Label label : selector.getEntries().keySet()) {
- if (!Type.Selector.isReservedLabel(label)) {
- configLabels.add(label);
- }
- }
+ Type.SelectorList<?> selectors = attributes.getSelectorList(attr.getName(), attr.getType());
+ if (selectors != null) {
+ configLabels.addAll(selectors.getKeyLabels());
}
}
@@ -1444,7 +1440,7 @@ public final class RuleClass {
String what = "attribute '" + attrName + "' in '" + name + "' rule";
converted = attr.getType().selectableConvert(attrVal, what, rule.getLabel());
- if ((converted instanceof Type.Selector<?>) && !attr.isConfigurable()) {
+ if ((converted instanceof Type.SelectorList<?>) && !attr.isConfigurable()) {
rule.reportError(rule.getLabel() + ": attribute \"" + attr.getName()
+ "\" is not configurable", eventHandler);
return null;