Modify SkyQueryEnvironment#evalTargetPatternKey to take into account the filtering policy specified in the TargetPatternKey.
Add a TargetExcludingFilteringPolicy that can filter multiple single targets
Allow for TargetPatternValue.combineTargetsBelowDirectoryWithNegativePatterns the option of excluding single targets.
Improve toString of some filtering policies.
PiperOrigin-RevId: 230566477
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternValue.java
index 2c43726..bfbb45d 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternValue.java
@@ -108,8 +108,8 @@
// subdirectory exclusion) is only acceptable because all the use cases for query universe
// preloading involve short (<10 items) pattern sequences.
Iterable<TargetPatternKey> combinedTargetPatternKeys =
- TargetPatternValue.combineNegativeTargetsBelowDirectoryPatterns(
- targetPatternKeysBuilder.build());
+ TargetPatternValue.combineTargetsBelowDirectoryWithNegativePatterns(
+ targetPatternKeysBuilder.build(), /*excludeSingleTargets=*/ false);
for (TargetPatternKey targetPatternKey : combinedTargetPatternKeys) {
if (targetPatternKey.isNegative()
&& !targetPatternKey