diff options
author | Florian Weikert <fwe@google.com> | 2015-08-28 14:30:06 +0000 |
---|---|---|
committer | John Field <jfield@google.com> | 2015-08-28 15:00:50 +0000 |
commit | 72545d5d5cf1d59254f64b13688175e0f301e324 (patch) | |
tree | 8a806f33ebe98572d337cb7c4afd35a432735d0f /src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java | |
parent | 76429bb8fb23a70e28d0a66e3949e5f8a5a2fb42 (diff) |
When a Skylark macro creates a native rule, it also sets the following rule attributes: generator_{function, name, location}
--
MOS_MIGRATED_REVID=101774632
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java | 27 |
1 files changed, 2 insertions, 25 deletions
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 da14fc6d44..a27c6f8f85 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 @@ -321,37 +321,14 @@ public class SkylarkRuleClassFunctions { } RuleClass ruleClass = builder.build(ruleClassName); PackageContext pkgContext = (PackageContext) env.lookup(PackageFactory.PKG_CONTEXT); - return RuleFactory.createAndAddRule(pkgContext, ruleClass, - addGeneratorAttributesForMacros((Map<String, Object>) args[0], env), ast); + return RuleFactory.createAndAddRule( + pkgContext, ruleClass, (Map<String, Object>) 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. - * - * <p>Otherwise, the specified map of arguments is returned without any changes. - */ - private Map<String, Object> addGeneratorAttributesForMacros( - Map<String, Object> args, Environment env) { - ImmutableList<BaseFunction> 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<String, Object> 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. */ void export(PathFragment skylarkFile, String ruleClassName) { |