aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
diff options
context:
space:
mode:
authorGravatar lberki <lberki@google.com>2017-06-14 16:20:19 +0200
committerGravatar Yun Peng <pcloudy@google.com>2017-06-16 09:24:20 +0200
commit1cd6d1ef061c2f8849012bdb8f83faedfa58779b (patch)
tree8075c8cbcb89f930add5684294ff1619ab13eb64 /src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
parent9eea05d068a06ab642dd9d86d46ee5fa2e36b02e (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.java6
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()) {