diff options
author | Vladimir Moskva <vladmos@google.com> | 2017-03-23 16:54:28 +0000 |
---|---|---|
committer | Yue Gan <yueg@google.com> | 2017-03-23 17:54:02 +0000 |
commit | cc07b2d4102c6891eadfdbd009f744233b3925ec (patch) | |
tree | cd69a6de340534b41ef270591778044c48b27042 /src/main/java/com/google/devtools/build/lib/skyframe | |
parent | e182500db1f331fd39f7e5d6215e6fdedbb0791a (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')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java | 6 |
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(); + } } } |