From cfb9f6a3c00d4943a3bc7248a873b643746e0d24 Mon Sep 17 00:00:00 2001 From: qunyanm Date: Thu, 16 Apr 2015 11:09:24 -0700 Subject: Change GetHashCode for Set, MultiSet and Map --- Binaries/DafnyRuntime.cs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'Binaries') diff --git a/Binaries/DafnyRuntime.cs b/Binaries/DafnyRuntime.cs index a682422a..2a553c81 100644 --- a/Binaries/DafnyRuntime.cs +++ b/Binaries/DafnyRuntime.cs @@ -75,7 +75,11 @@ namespace Dafny return other is Set && Equals((Set)other); } public override int GetHashCode() { - return dict.GetHashCode(); + var hashCode = 0; + foreach (var t in dict.Keys) { + hashCode = (hashCode << 3) | (hashCode >> 29) ^ t.GetHashCode(); + } + return hashCode; } public override string ToString() { var s = "{"; @@ -228,7 +232,12 @@ namespace Dafny return other is MultiSet && Equals((MultiSet)other); } public override int GetHashCode() { - return dict.GetHashCode(); + var hashCode = 0; + foreach (var kv in dict) { + hashCode = (hashCode << 3) | (hashCode >> 29) ^ kv.Key.GetHashCode(); + hashCode = (hashCode << 3) | (hashCode >> 29) ^ kv.Value.GetHashCode(); + } + return hashCode; } public override string ToString() { var s = "multiset{"; @@ -392,7 +401,12 @@ namespace Dafny return other is Map && Equals((Map)other); } public override int GetHashCode() { - return dict.GetHashCode(); + var hashCode = 0; + foreach (var kv in dict) { + hashCode = (hashCode << 3) | (hashCode >> 29) ^ kv.Key.GetHashCode(); + hashCode = (hashCode << 3) | (hashCode >> 29) ^ kv.Value.GetHashCode(); + } + return hashCode; } public override string ToString() { var s = "map["; -- cgit v1.2.3