aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
diff options
context:
space:
mode:
authorGravatar Florian Weikert <fwe@google.com>2015-08-28 14:30:06 +0000
committerGravatar John Field <jfield@google.com>2015-08-28 15:00:50 +0000
commit72545d5d5cf1d59254f64b13688175e0f301e324 (patch)
tree8a806f33ebe98572d337cb7c4afd35a432735d0f /src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
parent76429bb8fb23a70e28d0a66e3949e5f8a5a2fb42 (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.java27
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) {