X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Felaboration%2Ftransformations%2FUnifiableFactory.java;h=7b3face61c962d3b89dbe54c4c0361914762d311;hp=0daeb02aea051953e3ab53b4de5b6f0f486bdb7f;hb=9a175feb652b2b7bba7afa540831b9076be3c10e;hpb=0b72d3e4ec886838314ffeba0fa201e32c0aae3e diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/UnifiableFactory.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/UnifiableFactory.java index 0daeb02ae..7b3face61 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/UnifiableFactory.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/transformations/UnifiableFactory.java @@ -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; }