aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2016-04-28 17:04:58 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-04-29 08:09:34 +0000
commitffa14a6a372b22b16a9ac12f3d78a1b2859043cc (patch)
tree18ee1abb88979bdf0e0de158174b98cba4e7e137 /src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java
parent6144616cf3116df20551003d30379b104edca4cf (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.java7
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);
}
}
}