From 6a663390e5247c8619991ca763a9496839d61f8b Mon Sep 17 00:00:00 2001 From: Florian Weikert Date: Wed, 2 Sep 2015 14:04:33 +0000 Subject: When a Skylark macro creates a native rule, it also sets the following rule attributes: generator_{function, name, location} -- MOS_MIGRATED_REVID=102139196 --- .../build/lib/rules/SkylarkRuleClassFunctions.java | 27 ++-------------------- 1 file changed, 2 insertions(+), 25 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java') 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 4c070b4309..e2540342c7 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 @@ -331,36 +331,13 @@ public class SkylarkRuleClassFunctions { } RuleClass ruleClass = builder.build(ruleClassName); PackageContext pkgContext = (PackageContext) env.lookup(PackageFactory.PKG_CONTEXT); - return RuleFactory.createAndAddRule(pkgContext, ruleClass, - addGeneratorAttributesForMacros((Map) args[0], env), ast); + return RuleFactory.createAndAddRule( + pkgContext, ruleClass, (Map) args[0], ast, env.getStackTrace()); } catch (InvalidRuleException | NameConflictException | NoSuchVariableException e) { throw new EvalException(ast.getLocation(), e.getMessage()); } } - /** - * If the current rule was created by a macro, this method sets the appropriate values for the - * attributes generator_{name, function, location} and returns a map of all attribute values. - * - *

Otherwise, the specified map of arguments is returned without any changes. - */ - private Map addGeneratorAttributesForMacros( - Map args, Environment env) { - ImmutableList stackTrace = env.getStackTrace(); - if (stackTrace.isEmpty()) { - // If there was a macro, it would be on the stack. - return args; - } - - BaseFunction generator = stackTrace.get(0); // BaseFunction - ImmutableMap.Builder builder = ImmutableMap.builder(); - builder.putAll(args); - builder.put("generator_name", args.get("name")); - builder.put("generator_function", generator.getName()); - builder.put("generator_location", generator.getLocationPathAndLine()); - return builder.build(); - } - /** * Export a RuleFunction from a Skylark file with a given name. */ -- cgit v1.2.3