diff options
author | 2016-04-28 17:04:58 +0000 | |
---|---|---|
committer | 2016-04-29 08:09:34 +0000 | |
commit | ffa14a6a372b22b16a9ac12f3d78a1b2859043cc (patch) | |
tree | 18ee1abb88979bdf0e0de158174b98cba4e7e137 /src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java | |
parent | 6144616cf3116df20551003d30379b104edca4cf (diff) |
Let select() "unset" values via: select({"//some:condition: None }).
This not only uses the default value when applicable, but also causes
ConfiguredAttributeMapper.isAttributeValueExplicitlySpecified to
return false.
Note the default value can come from two places: from the rule
definition if specified, otherwise from the type default.
RELNOTES[NEW]: select({"//some:condition: None }) is now possible (this "unsets" the attribute).
--
MOS_MIGRATED_REVID=121029815
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java index 96a20fb964..90d4656ca2 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java @@ -128,8 +128,11 @@ public class AggregatingAttributeMapper extends AbstractAttributeMapper { observer.acceptLabelAttribute( getLabel().resolveRepositoryRelative(selectorEntry.getKey()), attribute); } - for (Label value : extractLabels(type, selectorEntry.getValue())) { - observer.acceptLabelAttribute(getLabel().resolveRepositoryRelative(value), attribute); + Object value = selector.isValueSet(selectorEntry.getKey()) + ? selectorEntry.getValue() + : attribute.getDefaultValue(null); + for (Label label : extractLabels(type, value)) { + observer.acceptLabelAttribute(getLabel().resolveRepositoryRelative(label), attribute); } } } |