diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/FileArtifactValue.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/FileArtifactValue.java | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FileArtifactValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileArtifactValue.java index 7f45e7d7ae..6bc9f5a1da 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/FileArtifactValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/FileArtifactValue.java @@ -17,6 +17,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.FileStateType; import com.google.devtools.build.lib.actions.cache.DigestUtils; import com.google.devtools.build.lib.actions.cache.Metadata; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; @@ -45,6 +46,11 @@ import javax.annotation.Nullable; @Immutable @ThreadSafe public abstract class FileArtifactValue implements SkyValue, Metadata { private static final class SingletonMarkerValue extends FileArtifactValue implements Singleton { + @Override + public FileStateType getType() { + return FileStateType.NONEXISTENT; + } + @Nullable @Override public byte[] getDigest() { @@ -74,6 +80,11 @@ public abstract class FileArtifactValue implements SkyValue, Metadata { private static final class OmittedFileValue extends FileArtifactValue implements Singleton { @Override + public FileStateType getType() { + return FileStateType.NONEXISTENT; + } + + @Override public byte[] getDigest() { throw new UnsupportedOperationException(); } @@ -117,6 +128,11 @@ public abstract class FileArtifactValue implements SkyValue, Metadata { this.mtime = mtime; } + @Override + public FileStateType getType() { + return FileStateType.DIRECTORY; + } + @Nullable @Override public byte[] getDigest() { @@ -154,6 +170,11 @@ public abstract class FileArtifactValue implements SkyValue, Metadata { } @Override + public FileStateType getType() { + return FileStateType.REGULAR_FILE; + } + + @Override public byte[] getDigest() { return digest; } @@ -255,10 +276,13 @@ public abstract class FileArtifactValue implements SkyValue, Metadata { return false; } Metadata m = (Metadata) o; + if (getType() != m.getType()) { + return false; + } if (isFile()) { - return m.isFile() && Arrays.equals(getDigest(), m.getDigest()) && getSize() == m.getSize(); + return Arrays.equals(getDigest(), m.getDigest()) && getSize() == m.getSize(); } else { - return !m.isFile() && getModifiedTime() == m.getModifiedTime(); + return getModifiedTime() == m.getModifiedTime(); } } |