import org.simantics.scl.compiler.internal.parsing.exceptions.SCLSyntaxErrorException;
import org.simantics.scl.compiler.internal.parsing.types.TypeAst;
import org.simantics.scl.compiler.types.TCon;
+import org.simantics.scl.compiler.types.TMetaVar;
import org.simantics.scl.compiler.types.TPred;
import org.simantics.scl.compiler.types.TVar;
import org.simantics.scl.compiler.types.Type;
ErrorLog errorLog;
THashMap<String, TVar> typeVariables = new THashMap<String, TVar>();
+ THashMap<String, TMetaVar> existentials;
public TypeTranslationContext(CompilationContext compilationContext) {
this.compilationContext = compilationContext;
return var;
}
+ public TMetaVar resolveExistential(long loc, String name, Kind expectedKind) {
+ if(existentials == null)
+ existentials = new THashMap<String, TMetaVar>();
+ TMetaVar var = existentials.get(name);
+ if(var == null) {
+ var = Types.metaVar(expectedKind);
+ existentials.put(name, var);
+ }
+ else
+ unify(loc, var.getKind(), expectedKind);
+ return var;
+ }
+
public TVar pushTypeVar(String name) {
return typeVariables.put(name, Types.var(Kinds.metaVar()));
}