aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/vfs
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-01-25 12:31:53 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-25 12:33:49 -0800
commit6e10efac41ea0f85130585d44df2f0565ea8d6fa (patch)
tree74363aa2b367b611d4ceba71cbcb55672d1148ca /src/main/java/com/google/devtools/build/lib/vfs
parenteb0150b5e3b95d011e99e6f531c962831beaa109 (diff)
Add CommandLineItem interface.
This interface makes it clearer in the type system exactly how items that go into a CustomCommandLine are turned into strings. It is a preparatory change to allow command line fingerprints to be more cheaply calculated, but it is valuable in itself from a code quality standpoint. PiperOrigin-RevId: 183274022
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/vfs')
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java12
2 files changed, 12 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/BUILD b/src/main/java/com/google/devtools/build/lib/vfs/BUILD
index f6d2eb427b..5eaf3116e2 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/vfs/BUILD
@@ -19,6 +19,7 @@ java_library(
srcs = PATH_FRAGMENT_SOURCES,
deps = [
"//src/main/java/com/google/devtools/build/lib:base-util",
+ "//src/main/java/com/google/devtools/build/lib:commandline_item",
"//src/main/java/com/google/devtools/build/lib:filetype",
"//src/main/java/com/google/devtools/build/lib:os_util",
"//src/main/java/com/google/devtools/build/lib:skylarkinterface",
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 9db3aa3ada..572042a7d7 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
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.vfs;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.actions.CommandLineItem;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
@@ -52,7 +53,11 @@ import java.util.Set;
@javax.annotation.concurrent.Immutable
@ThreadSafe
public abstract class PathFragment
- implements Comparable<PathFragment>, Serializable, SkylarkPrintable, FileType.HasFileType {
+ implements Comparable<PathFragment>,
+ Serializable,
+ SkylarkPrintable,
+ FileType.HasFileType,
+ CommandLineItem {
private static final Helper HELPER =
OS.getCurrent() == OS.WINDOWS ? WindowsPathFragment.HELPER : UnixPathFragment.HELPER;
@@ -762,6 +767,11 @@ public abstract class PathFragment
return getBaseName();
}
+ @Override
+ public String expandToCommandLine() {
+ return getPathString();
+ }
+
private static class PathFragmentCodec implements ObjectCodec<PathFragment> {
private final ObjectCodec<String> stringCodec = StringCodecs.asciiOptimized();