diff options
author | Greg Estren <gregce@google.com> | 2015-04-13 19:58:23 +0000 |
---|---|---|
committer | Philipp Wollermann <philwo@google.com> | 2015-04-14 14:31:21 +0000 |
commit | a4fc877f1734d95d6e9f38f1f44add9f0b82d613 (patch) | |
tree | 0b9b67b0e09530afd1609b6d3c16eed331a8df72 /src/main/java/com/google/devtools/build/lib/packages/RuleClass.java | |
parent | 73055bed3eb4c06d7eb87c81bd07de2d16d477e7 (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.java | 12 |
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; |