diff --git a/internal/util-interface/src/main/java/xsbti/Maybe.java b/internal/util-interface/src/main/java/xsbti/Maybe.java index f730ef918..3280e5990 100644 --- a/internal/util-interface/src/main/java/xsbti/Maybe.java +++ b/internal/util-interface/src/main/java/xsbti/Maybe.java @@ -14,6 +14,16 @@ public abstract class Maybe return new Maybe() { public boolean isDefined() { return true; } public s get() { return v; } + public int hashCode() { return 17 + (v == null ? 0 : v.hashCode()); } + public String toString() { return "Maybe.just(" + v + ")"; } + public boolean equals(Object o) { + if (o == null) return false; + if (!(o instanceof Maybe)) return false; + Maybe other = (Maybe) o; + if (!other.isDefined()) return false; + if (v == null) return other.get() == null; + return v.equals(other.get()); + } }; } public static Maybe nothing() @@ -21,10 +31,19 @@ public abstract class Maybe return new Maybe() { public boolean isDefined() { return false; } public s get() { throw new UnsupportedOperationException("nothing.get"); } + public int hashCode() { return 1; } + public String toString() { return "Maybe.nothing()"; } + public boolean equals(Object o) { + if (o == null) return false; + if (!(o instanceof Maybe)) return false; + Maybe other = (Maybe) o; + return !other.isDefined(); + } }; + } public final boolean isEmpty() { return !isDefined(); } public abstract boolean isDefined(); public abstract t get(); -} \ No newline at end of file +}