diff options
author | 2017-07-27 22:09:34 +0200 | |
---|---|---|
committer | 2017-07-28 10:44:52 +0200 | |
commit | da4c959603280ded71ad8fbc2d30d4917b175750 (patch) | |
tree | dd201d03665350c1fec5247eba18af0bea4dd205 /src/main/java/com/google/devtools/build/lib/analysis | |
parent | d8235cf959ac1326836064aa9442256b69f7318a (diff) |
Fix confusing semantics for Attribute.Builder.allowedRuleClasses.
1) Update the javadocs.
2) Clarify that allowedRuleClases and allowedRuleClassesWithWarning
must be disjoint sets.
3) Enforce 2).
4) Fix error messaging when only "with warnings" is set.
PiperOrigin-RevId: 163379567
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index 80b2c4e9ca..5e38598317 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java @@ -2054,7 +2054,7 @@ public final class RuleContext extends TargetContext /** * Because some rules still have to use allowedRuleClasses to do rule dependency validation. - * A dependency is valid if it is from a rule in allowedRuledClasses, OR if all of the providers + * A dependency is valid if it is from a rule in allowedRuleClasses, OR if all of the providers * in mandatoryNativeProviders AND mandatoryProvidersList are provided by the target. */ private void validateRuleDependency(ConfiguredTarget prerequisite, Attribute attribute) { @@ -2077,17 +2077,17 @@ public final class RuleContext extends TargetContext false); } - if (attribute.getAllowedRuleClassesWarningPredicate() != Predicates.<RuleClass>alwaysTrue()) { - Predicate<RuleClass> warningPredicate = attribute.getAllowedRuleClassesWarningPredicate(); - if (warningPredicate.apply(ruleClass)) { - reportBadPrerequisite(attribute, prerequisiteTarget.getTargetKind(), prerequisite, - "expected " + attribute.getAllowedRuleClassesPredicate(), true); - // prerequisite has a rule class allowed with a warning => accept, emitting a warning. - return; - } + if (attribute.getAllowedRuleClassesWarningPredicate().apply(ruleClass)) { + Predicate<RuleClass> allowedRuleClasses = attribute.getAllowedRuleClassesPredicate(); + reportBadPrerequisite(attribute, prerequisiteTarget.getTargetKind(), prerequisite, + allowedRuleClasses == Predicates.<RuleClass>alwaysTrue() + ? null : "expected " + allowedRuleClasses, + true); + // prerequisite has a rule class allowed with a warning => accept, emitting a warning. + return; } - // If we got there, we have no allowed rule class. + // If we get here, we have no allowed rule class. // If mandatory providers are specified, try them. Set<String> unfulfilledRequirements = new LinkedHashSet<>(); if (!attribute.getMandatoryNativeProvidersList().isEmpty() |