From e96b0b88a5f9aa8cd816e3603b9179f040d79270 Mon Sep 17 00:00:00 2001 From: Florian Weikert Date: Fri, 25 Sep 2015 11:35:11 +0000 Subject: Skylark rules can no longer overwrite built-in attributes. -- MOS_MIGRATED_REVID=103931317 --- .../build/lib/rules/SkylarkRuleClassFunctions.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules') diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java index f2a3733b16..88f61ec942 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java @@ -264,11 +264,12 @@ public class SkylarkRuleClassFunctions { Attribute.Builder attrBuilder = (Attribute.Builder) attr.getValue(); String attrName = attributeToNative(attr.getKey(), ast.getLocation(), attrBuilder.hasLateBoundValue()); - builder.addOrOverrideAttribute(attrBuilder.build(attrName)); + addAttribute(builder, attrBuilder.build(attrName)); } } if (executable || test) { - builder.addOrOverrideAttribute( + addAttribute( + builder, attr("$is_executable", BOOLEAN) .value(true) .nonconfigurable("Called from RunCommand.isExecutable, which takes a Target") @@ -297,12 +298,19 @@ public class SkylarkRuleClassFunctions { } registerRequiredFragments(fragments, hostFragments, builder); - builder.setConfiguredTargetFunction(implementation); builder.setRuleDefinitionEnvironment(funcallEnv); return new RuleFunction(builder, type); } + private void addAttribute(RuleClass.Builder builder, Attribute attribute) throws EvalException { + try { + builder.addOrOverrideAttribute(attribute); + } catch (IllegalArgumentException ex) { + throw new EvalException(location, ex); + } + } + private void registerRequiredFragments( SkylarkList fragments, SkylarkList hostFragments, RuleClass.Builder builder) { Map> map = new HashMap<>(); -- cgit v1.2.3