diff options
author | Dmitry Lomov <dslomov@google.com> | 2016-12-05 16:57:02 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-12-05 17:25:12 +0000 |
commit | a701988a4dd57754fe196d04f961b9a19ab0080b (patch) | |
tree | cf8443ee5b3c64c21930ebd336044a9986b7be2f /src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java | |
parent | 76e31d16ba359025c86e44a0e6b003d8347673ac (diff) |
Add 'aspect_id' for to identify aspects that has been applied to the target.
Add a concept of aspect_id: an unique string that identifies a
propagating aspect (aspect class + parameters).
This string is designed to be:
- Unique for each aspect
- human-readable for debugging purposes
- not easily parsable.
Skylark API:
- `ctx.aspect_id` returns an identifier of the current aspect inside
aspect implementation function
- `Target.aspect_ids` return a list of aspect ids for aspects applied to
a given Target (https://www.bazel.io/versions/master/docs/skylark/lib/Target.html)
--
PiperOrigin-RevId: 141057865
MOS_MIGRATED_REVID=141057865
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java index f078c3a154..2608c7f535 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.analysis.AspectDescriptor; import com.google.devtools.build.lib.analysis.ConfiguredAspect; import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory; import com.google.devtools.build.lib.analysis.ConfiguredTarget; @@ -50,9 +51,11 @@ public class SkylarkAspectFactory implements ConfiguredAspectFactory { ConfiguredTarget base, RuleContext ruleContext, AspectParameters parameters) throws InterruptedException { try (Mutability mutability = Mutability.create("aspect")) { + AspectDescriptor aspectDescriptor = new AspectDescriptor( + skylarkAspect.getAspectClass(), parameters); SkylarkRuleContext skylarkRuleContext; try { - skylarkRuleContext = new SkylarkRuleContext(ruleContext, skylarkAspect); + skylarkRuleContext = new SkylarkRuleContext(ruleContext, aspectDescriptor); } catch (EvalException e) { ruleContext.ruleError(e.getMessage()); return null; @@ -82,7 +85,7 @@ public class SkylarkAspectFactory implements ConfiguredAspectFactory { } ConfiguredAspect.Builder builder = new ConfiguredAspect.Builder( - skylarkAspect.getAspectClass(), parameters, ruleContext); + aspectDescriptor, ruleContext); SkylarkClassObject struct = (SkylarkClassObject) aspectSkylarkObject; Location loc = struct.getCreationLoc(); |