Reinstate mutable maps, again.
--
MOS_MIGRATED_REVID=114860576
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
index 0c37860..e7cc0e6 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
@@ -28,6 +28,7 @@
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.EvalUtils;
import com.google.devtools.build.lib.syntax.Printer;
import com.google.devtools.build.lib.util.FileType;
import com.google.devtools.build.lib.util.Preconditions;
@@ -95,7 +96,8 @@
@SkylarkModule(name = "File",
doc = "This type represents a file used by the build system. It can be "
+ "either a source file or a derived file produced by a rule.")
-public class Artifact implements FileType.HasFilename, ArtifactFile, SkylarkValue {
+public class Artifact
+ implements FileType.HasFilename, ArtifactFile, SkylarkValue , Comparable<Object> {
/**
* Compares artifact according to their exec paths. Sorts null values first.
@@ -115,6 +117,15 @@
}
};
+ @Override
+ public int compareTo(Object o) {
+ if (o instanceof Artifact) {
+ return EXEC_PATH_COMPARATOR.compare(this, (Artifact) o);
+ }
+ return EvalUtils.compareByClass(this, o);
+ }
+
+
/** An object that can expand middleman artifacts. */
public interface ArtifactExpander {