Add "allrdeps" function that computes rdeps in whatever universe happens to be loaded.
This avoids having to materialize the full universe scope in memory when doing an rdeps query over "//...".
Another option considered was special-casing the string "//..." if it was the first argument to rdeps, but this seemed cleaner.
--
MOS_MIGRATED_REVID=96878999
diff --git a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
index 44db228..8a6e5dc 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
@@ -39,6 +39,7 @@
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.pkgcache.TargetPatternEvaluator;
+import com.google.devtools.build.lib.query2.engine.AllRdepsFunction;
import com.google.devtools.build.lib.query2.engine.QueryEvalResult;
import com.google.devtools.build.lib.query2.engine.QueryException;
import com.google.devtools.build.lib.query2.engine.QueryExpression;
@@ -460,4 +461,10 @@
public Target getOrCreate(Target target) {
return target;
}
+
+ @Override
+ public Iterable<QueryFunction> getFunctions() {
+ return ImmutableList.<QueryFunction>builder()
+ .addAll(super.getFunctions()).add(new AllRdepsFunction()).build();
+ }
}