Refactor all ctor callsites of PathFragment to instead call a static 'create' method.
This paves the way for changing PathFragment to e.g. an abstract class with multiple subclasses. This way we can split out the windows-specific stuff into one of these concrete classes, making the code more readable and also saving memory (since the shallow heap size of the NonWindowsPathFragment subclass will hopefully be smaller than that of the current PathFragment).
This also lets us pursue gc churn optimizations. We can now do interning in PathFragment#create and can also get rid of unnecessary intermediate PathFragment allocations.
RELNOTES: None
PiperOrigin-RevId: 152145768
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java
index 71e9cec..5ad7027 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/EnvironmentTest.java
@@ -243,8 +243,8 @@
}
}
DummyFreezable dummy = new DummyFreezable();
- Location locA = Location.fromPathFragment(new PathFragment("/a"));
- Location locB = Location.fromPathFragment(new PathFragment("/b"));
+ Location locA = Location.fromPathFragment(PathFragment.create("/a"));
+ Location locB = Location.fromPathFragment(PathFragment.create("/b"));
Environment env = Environment.builder(mutability).build();
// Acquire two locks, release two locks, check along the way.
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java b/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
index 10da1ad..b270a54 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/LexerTest.java
@@ -41,7 +41,7 @@
* error handler beforehand.
*/
private Lexer createLexer(String input) {
- PathFragment somePath = new PathFragment("/some/path.txt");
+ PathFragment somePath = PathFragment.create("/some/path.txt");
ParserInputSource inputSource = ParserInputSource.create(input, somePath);
Reporter reporter = new Reporter(new EventBus());
reporter.addHandler(new EventHandler() {
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/LineNumberTableTest.java b/src/test/java/com/google/devtools/build/lib/syntax/LineNumberTableTest.java
index c461635..4377b35 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/LineNumberTableTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/LineNumberTableTest.java
@@ -29,7 +29,7 @@
@RunWith(JUnit4.class)
public class LineNumberTableTest {
private LineNumberTable create(String buffer) {
- return LineNumberTable.create(buffer.toCharArray(), new PathFragment("/fake/file"));
+ return LineNumberTable.create(buffer.toCharArray(), PathFragment.create("/fake/file"));
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserInputSourceTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserInputSourceTest.java
index d93fc6a..467a5ba 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ParserInputSourceTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserInputSourceTest.java
@@ -50,7 +50,7 @@
public void testCreateFromString() {
String content = "Content provided as a string.";
String pathName = "/the/name/of/the/content.txt";
- ParserInputSource input = ParserInputSource.create(content, new PathFragment(pathName));
+ ParserInputSource input = ParserInputSource.create(content, PathFragment.create(pathName));
assertEquals(content, new String(input.getContent()));
assertEquals(pathName, input.getPath().toString());
}
@@ -60,7 +60,7 @@
String content = "Content provided as a string.";
String pathName = "/the/name/of/the/content.txt";
char[] contentChars = content.toCharArray();
- ParserInputSource input = ParserInputSource.create(contentChars, new PathFragment(pathName));
+ ParserInputSource input = ParserInputSource.create(contentChars, PathFragment.create(pathName));
assertEquals(content, new String(input.getContent()));
assertEquals(pathName, input.getPath().toString());
}
@@ -81,12 +81,12 @@
@Test
public void testWillNotTryToReadInputFileIfContentProvidedAsString() {
ParserInputSource.create(
- "Content provided as string.", new PathFragment("/will/not/try/to/read"));
+ "Content provided as string.", PathFragment.create("/will/not/try/to/read"));
}
@Test
public void testWillNotTryToReadInputFileIfContentProvidedAsChars() {
char[] content = "Content provided as char array.".toCharArray();
- ParserInputSource.create(content, new PathFragment("/will/not/try/to/read"));
+ ParserInputSource.create(content, PathFragment.create("/will/not/try/to/read"));
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
index db96a9d..e107d1b 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java
@@ -1025,7 +1025,7 @@
assertThat(imp.getImportString()).named("getImportString()").isEqualTo("/some/skylark/file");
assertThat(imp.hasAbsolutePath()).named("hasAbsolutePath()").isTrue();
assertThat(imp.getAbsolutePath()).named("getAbsolutePath()")
- .isEqualTo(new PathFragment("/some/skylark/file.bzl"));
+ .isEqualTo(PathFragment.create("/some/skylark/file.bzl"));
int startOffset = stmt.getImport().getLocation().getStartOffset();
int endOffset = stmt.getImport().getLocation().getEndOffset();
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportTest.java
index 49fdd73..fa9dfbf 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkImportTest.java
@@ -46,7 +46,7 @@
.isEqualTo(Label.parseAbsoluteUnchecked(expectedLabelString));
assertThat(importForLabel.asPathFragment()).named("asPathFragment()")
- .isEqualTo(new PathFragment(expectedPathString));
+ .isEqualTo(PathFragment.create(expectedPathString));
thrown.expect(IllegalStateException.class);
importForLabel.getAbsolutePath();
@@ -76,10 +76,10 @@
Label irrelevantContainingFile = Label.parseAbsoluteUnchecked("//another/path:BUILD");
assertThat(importForPath.getAbsolutePath()).named("getAbsolutePath()")
- .isEqualTo(new PathFragment("//some/skylark/file.bzl"));
+ .isEqualTo(PathFragment.create("//some/skylark/file.bzl"));
assertThat(importForPath.asPathFragment()).named("asPathFragment()")
- .isEqualTo(new PathFragment("/some/skylark/file.bzl"));
+ .isEqualTo(PathFragment.create("/some/skylark/file.bzl"));
thrown.expect(IllegalStateException.class);
importForPath.getLabel(irrelevantContainingFile);
@@ -99,7 +99,7 @@
.isEqualTo(Label.parseAbsolute(expectedLabelString));
assertThat(importForLabel.asPathFragment()).named("asPathFragment()")
- .isEqualTo(new PathFragment(expectedPathString));
+ .isEqualTo(PathFragment.create(expectedPathString));
thrown.expect(IllegalStateException.class);
importForLabel.getAbsolutePath();
@@ -149,7 +149,7 @@
.isEqualTo(Label.parseAbsolute(expectedLabelString));
assertThat(importForPath.asPathFragment()).named("asPathFragment()")
- .isEqualTo(new PathFragment(expectedPathString));
+ .isEqualTo(PathFragment.create(expectedPathString));
thrown.expect(IllegalStateException.class);
importForPath.getAbsolutePath();