]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/UnifiableFactory.java
migrated to svn revision 33108
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / elaboration / transformations / UnifiableFactory.java
index 0daeb02aea051953e3ab53b4de5b6f0f486bdb7f..7b3face61c962d3b89dbe54c4c0361914762d311 100644 (file)
@@ -1,8 +1,5 @@
 package org.simantics.scl.compiler.internal.elaboration.transformations;
 
-import gnu.trove.map.hash.THashMap;
-import gnu.trove.set.hash.THashSet;
-
 import java.util.ArrayList;
 
 import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
@@ -25,7 +22,7 @@ import org.simantics.scl.compiler.elaboration.expressions.block.Statement;
 import org.simantics.scl.compiler.elaboration.modules.SCLValue;
 import org.simantics.scl.compiler.errors.Locations;
 import org.simantics.scl.compiler.internal.codegen.references.IVal;
-import org.simantics.scl.compiler.internal.types.TypeHashCodeContext;
+import org.simantics.scl.compiler.internal.types.HashCodeUtils;
 import org.simantics.scl.compiler.types.TCon;
 import org.simantics.scl.compiler.types.Type;
 import org.simantics.scl.compiler.types.Types;
@@ -33,6 +30,9 @@ import org.simantics.scl.compiler.types.exceptions.MatchException;
 import org.simantics.scl.compiler.types.util.MultiApply;
 import org.simantics.scl.compiler.types.util.MultiFunction;
 
+import gnu.trove.map.hash.THashMap;
+import gnu.trove.set.hash.THashSet;
+
 public class UnifiableFactory {
     private static final TCon Unifiable = Types.con("Unification", "Unifiable");
     private static final Name uVar = Name.create("Unification", "uVar");
@@ -245,11 +245,11 @@ public class UnifiableFactory {
         @Override
         public int hashCode() {
             if(hashCode == 0) {
-                TypeHashCodeContext hcContext = new TypeHashCodeContext();
-                hcContext.append(function.hashCode());
+                int hash = HashCodeUtils.SEED;
+                hash = HashCodeUtils.update(hash, function.hashCode());
                 for(Type typeParameter : typeParameters)
-                    typeParameter.updateHashCode(hcContext);
-                hashCode = hcContext.getResult();
+                    hash = typeParameter.hashCode(hash);
+                hashCode = hash;
             }
             return hashCode;
         }