aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
diff options
context:
space:
mode:
authorGravatar Vladimir Moskva <vladmos@google.com>2017-03-23 16:54:28 +0000
committerGravatar Yue Gan <yueg@google.com>2017-03-23 17:54:02 +0000
commitcc07b2d4102c6891eadfdbd009f744233b3925ec (patch)
treecd69a6de340534b41ef270591778044c48b27042 /src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
parente182500db1f331fd39f7e5d6215e6fdedbb0791a (diff)
Remove provider safety check and make all old ctx objects featureless
It's now allowed to return anything from a rule implementation function. If a ctx object is returned it becomes featureless and cannot be used from anywhere else (i.e. from an implementation function of another rule). Fixes #2319 -- PiperOrigin-RevId: 151015919 MOS_MIGRATED_REVID=151015919
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.java6
1 files changed, 5 insertions, 1 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 bd0900b8a5..0c01e20c64 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
@@ -51,10 +51,10 @@ public class SkylarkAspectFactory implements ConfiguredAspectFactory {
public ConfiguredAspect create(
ConfiguredTarget base, RuleContext ruleContext, AspectParameters parameters)
throws InterruptedException {
+ SkylarkRuleContext skylarkRuleContext = null;
try (Mutability mutability = Mutability.create("aspect")) {
AspectDescriptor aspectDescriptor = new AspectDescriptor(
skylarkAspect.getAspectClass(), parameters);
- SkylarkRuleContext skylarkRuleContext;
try {
skylarkRuleContext = new SkylarkRuleContext(ruleContext, aspectDescriptor);
} catch (EvalException e) {
@@ -94,6 +94,10 @@ public class SkylarkAspectFactory implements ConfiguredAspectFactory {
ruleContext.ruleError("\n" + e.print());
return null;
}
+ } finally {
+ if (skylarkRuleContext != null) {
+ skylarkRuleContext.nullify();
+ }
}
}