Add the option to match by regexp in RecursiveFilesystemTraversal.
--
MOS_MIGRATED_REVID=91642690
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
index f72792f..42b73b5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java
@@ -29,6 +29,8 @@
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
+import java.util.regex.Pattern;
+
import javax.annotation.Nullable;
/**
@@ -132,22 +134,27 @@
*/
final boolean skipTestingForSubpackage;
+ /** A pattern that files must match to be included in this traversal (may be null.) */
+ @Nullable
+ final Pattern pattern;
+
/** Information to be attached to any error messages that may be reported. */
@Nullable final String errorInfo;
public TraversalRequest(RootedPath path, boolean isRootGenerated,
PackageBoundaryMode crossPkgBoundaries, boolean skipTestingForSubpackage,
- @Nullable String errorInfo) {
+ @Nullable String errorInfo, @Nullable Pattern pattern) {
this.path = path;
this.isGenerated = isRootGenerated;
this.crossPkgBoundaries = crossPkgBoundaries;
this.skipTestingForSubpackage = skipTestingForSubpackage;
this.errorInfo = errorInfo;
+ this.pattern = pattern;
}
private TraversalRequest duplicate(RootedPath newRoot, boolean newSkipTestingForSubpackage) {
return new TraversalRequest(newRoot, isGenerated, crossPkgBoundaries,
- newSkipTestingForSubpackage, errorInfo);
+ newSkipTestingForSubpackage, errorInfo, pattern);
}
/** Creates a new request to traverse a child element in the current directory (the root). */
@@ -177,20 +184,23 @@
TraversalRequest o = (TraversalRequest) obj;
return path.equals(o.path) && isGenerated == o.isGenerated
&& crossPkgBoundaries == o.crossPkgBoundaries
- && skipTestingForSubpackage == o.skipTestingForSubpackage;
+ && skipTestingForSubpackage == o.skipTestingForSubpackage
+ && Objects.equal(pattern, o.pattern);
}
@Override
public int hashCode() {
- return Objects.hashCode(path, isGenerated, crossPkgBoundaries, skipTestingForSubpackage);
+ return Objects.hashCode(path, isGenerated, crossPkgBoundaries, skipTestingForSubpackage,
+ pattern);
}
@Override
public String toString() {
return String.format(
"TraversalParams(root=%s, is_generated=%d, skip_testing_for_subpkg=%d,"
- + " pkg_boundaries=%s)", path, isGenerated ? 1 : 0, skipTestingForSubpackage ? 1 : 0,
- crossPkgBoundaries);
+ + " pkg_boundaries=%s, pattern=%s)", path, isGenerated ? 1 : 0,
+ skipTestingForSubpackage ? 1 : 0, crossPkgBoundaries,
+ pattern == null ? "null" : pattern.pattern());
}
}