diff options
author | 2016-07-13 16:22:30 +0000 | |
---|---|---|
committer | 2016-07-14 11:12:15 +0000 | |
commit | bc47f40b0dd352d3bf9dc8228fbf0279ac67e907 (patch) | |
tree | 93ac0e8ae932517d4b080769b95345fd338767c7 /src/main/java/com/google/devtools/build/lib/query2/engine/LabelsFunction.java | |
parent | 80d1e16b7ae1d04fa2fa4c561588fe9fdbaefc41 (diff) |
Re-implement variables in the blaze query language. Instead of using a mutable global context of variable bindings, pass around immutable local contexts.
The motivation is so we can safely evaluate all blaze query expressions concurrently under the hood. A global context is hostile to this goal.
--
MOS_MIGRATED_REVID=127324600
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/query2/engine/LabelsFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/query2/engine/LabelsFunction.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/query2/engine/LabelsFunction.java b/src/main/java/com/google/devtools/build/lib/query2/engine/LabelsFunction.java index a13f42cfb8..140e732437 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/engine/LabelsFunction.java +++ b/src/main/java/com/google/devtools/build/lib/query2/engine/LabelsFunction.java @@ -52,12 +52,16 @@ class LabelsFunction implements QueryFunction { } @Override - public <T> void eval(final QueryEnvironment<T> env, final QueryExpression expression, - final List<Argument> args, final Callback<T> callback) + public <T> void eval( + final QueryEnvironment<T> env, + VariableContext<T> context, + final QueryExpression expression, + final List<Argument> args, + final Callback<T> callback) throws QueryException, InterruptedException { final String attrName = args.get(0).getWord(); final Uniquifier<T> uniquifier = env.createUniquifier(); - env.eval(args.get(1).getExpression(), new Callback<T>() { + env.eval(args.get(1).getExpression(), context, new Callback<T>() { @Override public void process(Iterable<T> partialResult) throws QueryException, InterruptedException { for (T input : partialResult) { |