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%2Ftypes%2FTypeElaborationContext.java;h=8e638a08984186e97f1c2e0b472e8356348e6d33;hp=bfde4677352e4cff7e74661811f8e654a91c8c02;hb=4c2fb8fefbdec1856e160dc24b6498aa4bd5eb48;hpb=aca33ac9ec17d1555f6413edaa339ad3692e29bb diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/types/TypeElaborationContext.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/types/TypeElaborationContext.java index bfde46773..8e638a089 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/types/TypeElaborationContext.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/types/TypeElaborationContext.java @@ -1,5 +1,6 @@ package org.simantics.scl.compiler.internal.types; +import org.simantics.scl.compiler.types.TMetaVar; import org.simantics.scl.compiler.types.TVar; import org.simantics.scl.compiler.types.Type; import org.simantics.scl.compiler.types.Types; @@ -10,7 +11,8 @@ import gnu.trove.map.hash.THashMap; public class TypeElaborationContext { - THashMap vars; + THashMap vars; + THashMap existentials; ITypeEnvironment environment; public TypeElaborationContext( @@ -24,17 +26,28 @@ public class TypeElaborationContext { this(new THashMap(), environment); } + public TMetaVar resolveExistential(String varName) { + if(existentials == null) + existentials = new THashMap(); + TMetaVar var = existentials.get(varName); + if(var == null) { + var = Types.metaVar(Kinds.metaVar()); + existentials.put(varName, var); + } + return var; + } + public TVar resolveTypeVariable(String varName) { TVar var = vars.get(varName); if(var == null) { - var = Types.var(Kinds.STAR /* FIXME */); + var = Types.var(Kinds.metaVar()); vars.put(varName, var); } return var; } - + public TVar push(String varName) { - return vars.put(varName, Types.var(Kinds.STAR /* FIXME */)); + return vars.put(varName, Types.var(Kinds.metaVar())); } public TVar pop(String varName, TVar oldVar) {