diff options
author | 2017-06-14 16:20:19 +0200 | |
---|---|---|
committer | 2017-06-16 09:24:20 +0200 | |
commit | 1cd6d1ef061c2f8849012bdb8f83faedfa58779b (patch) | |
tree | 8075c8cbcb89f930add5684294ff1619ab13eb64 /src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java | |
parent | 9eea05d068a06ab642dd9d86d46ee5fa2e36b02e (diff) |
Revamp JavaToolchain:
- Rely on existing infrastructure to verify that attributes only contain a single artifact and that mandatory attributes are specified
- Add single artifact modifiers to attributes that need them
- Remove "final" modifiers from method variables (we don't use them in Blaze)
- Replace deprecated #add() with #addProvider()
Since this relies on existing infrastructure, I thought adding tests is redundant. I did test it manually, though, to be extra safe by testing what happens if these attributes contain an empty filegroup or a filegroup with multiple artifacts in it.
RELNOTES: None.
PiperOrigin-RevId: 158975017
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java | 6 |
1 files changed, 6 insertions, 0 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 02fb3e537b..e17ea79cec 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 @@ -1761,6 +1761,12 @@ public final class RuleContext extends TargetContext if (attribute == null) { continue; } + + if (attribute.isSingleArtifact() && entry.getValue().size() > 1) { + attributeError(attribute.getName(), "must contain a single dependency"); + continue; + } + if (attribute.isSilentRuleClassFilter()) { Predicate<RuleClass> filter = attribute.getAllowedRuleClassesPredicate(); for (ConfiguredTarget configuredTarget : entry.getValue()) { |