PathFragment factory methods guarantee EMPTY_FRAGMENT is only empty PathFragment.
RELNOTES:
None.
PiperOrigin-RevId: 269818481
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
index 4c7e219..ea4b2fd 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
@@ -60,7 +60,7 @@
CommandLineItem {
private static final OsPathPolicy OS = OsPathPolicy.getFilePathOs();
- @AutoCodec public static final PathFragment EMPTY_FRAGMENT = create("");
+ @AutoCodec public static final PathFragment EMPTY_FRAGMENT = new PathFragment("", 0);
public static final char SEPARATOR_CHAR = OS.getSeparator();
public static final int INVALID_SEGMENT = -1;
@@ -69,6 +69,9 @@
/** Creates a new normalized path fragment. */
public static PathFragment create(String path) {
+ if (path.isEmpty()) {
+ return EMPTY_FRAGMENT;
+ }
int normalizationLevel = OS.needsToNormalize(path);
String normalizedPath =
normalizationLevel != OsPathPolicy.NORMALIZED
@@ -96,6 +99,9 @@
*/
@AutoCodec.Instantiator
static PathFragment createAlreadyNormalized(String normalizedPath, int driveStrLength) {
+ if (normalizedPath.isEmpty()) {
+ return EMPTY_FRAGMENT;
+ }
return new PathFragment(normalizedPath, driveStrLength);
}