aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/Attribute.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Attribute.java11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
index 8751696579..ca9547fb87 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
@@ -104,7 +104,8 @@ public final class Attribute implements Comparable<Attribute> {
@Override
public Aspect getAspect(Rule rule) {
- return Aspect.forNative(aspectClass, parametersExtractor.apply(rule));
+ AspectParameters params = parametersExtractor.apply(rule);
+ return params == null ? null : Aspect.forNative(aspectClass, params);
}
}
@@ -992,7 +993,8 @@ public final class Attribute implements Comparable<Attribute> {
* Asserts that a particular parameterized aspect probably needs to be computed for all direct
* dependencies through this attribute.
*
- * @param evaluator function that extracts aspect parameters from rule.
+ * @param evaluator function that extracts aspect parameters from rule. If it returns null,
+ * then the aspect will not be attached.
*/
public Builder<TYPE> aspect(
NativeAspectClass aspect, Function<Rule, AspectParameters> evaluator) {
@@ -2050,7 +2052,10 @@ public final class Attribute implements Comparable<Attribute> {
public ImmutableList<Aspect> getAspects(Rule rule) {
ImmutableList.Builder<Aspect> builder = ImmutableList.builder();
for (RuleAspect aspect : aspects) {
- builder.add(aspect.getAspect(rule));
+ Aspect a = aspect.getAspect(rule);
+ if (a != null) {
+ builder.add(a);
+ }
}
return builder.build();
}