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-09-02 14:04:33 +0000
committerGravatar Florian Weikert <fwe@google.com>2015-09-02 14:33:19 +0000
commit6a663390e5247c8619991ca763a9496839d61f8b (patch)
treea1ddb3c8c161efc7f9882ca71b0bd96cfcf53957 /src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
parente899fc3054d25cf5d8fd06d585dd05737944e7cd (diff)
When a Skylark macro creates a native rule, it also sets the following rule attributes: generator_{function, name, location}
-- MOS_MIGRATED_REVID=102139196
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 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,37 +331,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) {