diff options
author | tomlu <tomlu@google.com> | 2018-01-25 12:31:53 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-01-25 12:33:49 -0800 |
commit | 6e10efac41ea0f85130585d44df2f0565ea8d6fa (patch) | |
tree | 74363aa2b367b611d4ceba71cbcb55672d1148ca /src/main/java/com/google/devtools/build/lib/vfs | |
parent | eb0150b5e3b95d011e99e6f531c962831beaa109 (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/BUILD | 1 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java | 12 |
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(); |