From 7a9721440a1adfa6757b946e87d9865a55b26368 Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau Date: Sat, 25 Apr 2015 19:28:15 +0000 Subject: Fix SkylarkList#equals -- MOS_MIGRATED_REVID=92063536 --- .../devtools/build/lib/syntax/SkylarkList.java | 39 ++++++++++++---------- 1 file changed, 22 insertions(+), 17 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib') diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java index 5562fbf851..2d6f39722e 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java @@ -83,6 +83,28 @@ public abstract class SkylarkList implements Iterable { return EvalUtils.prettyPrintValue(this); } + @Override + public boolean equals(Object object) { + if (this == object) { + return true; + } + if (!(object instanceof SkylarkList)) { + return false; + } + SkylarkList other = (SkylarkList) object; + if (this.isTuple() != other.isTuple()) { + return false; + } + return toList().equals(other.toList()); + } + + @Override + public int hashCode() { + return SkylarkList.class.hashCode() + + Boolean.valueOf(isTuple()).hashCode() + + 31 * toList().hashCode(); + } + // TODO(bazel-team): we should be very careful using this method. Check and remove // auto conversions on the Java-Skylark interface if possible. /** @@ -180,23 +202,6 @@ public abstract class SkylarkList implements Iterable { public String toString() { return EvalUtils.prettyPrintValue(this); } - - @Override - public int hashCode() { - return list.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof SimpleSkylarkList)) { - return false; - } - SimpleSkylarkList other = (SimpleSkylarkList) obj; - return other.list.equals(this.list); - } } /** -- cgit v1.2.3