]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/types/TVarAst.java
(refs #7588) Support for existential type variables with syntax ?v
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / parsing / types / TVarAst.java
index e95b3ad9a9a4cdf21aab2abafa835b6457d013ad..84d3e3a01d4f37fd02e6fc331ba979b40bf7aa99 100644 (file)
@@ -56,6 +56,8 @@ public class TVarAst extends TypeAst {
             }
             else if(Character.isLowerCase(c))
                 return context.resolveTypeVariable(location, name, expectedKind);
+            else if(c == '?')
+                return context.resolveExistential(location, name, expectedKind);
             else {
                 TypeDescriptor tdesc;
                 try {
@@ -105,6 +107,8 @@ public class TVarAst extends TypeAst {
             }
             else if(Character.isLowerCase(c))
                 return context.resolveTypeVariable(name);
+            else if(c == '?')
+                return context.resolveExistential(name);
             else {                
                 con = context.resolveTypeConstructor(name);
                 if(con == null) {
@@ -150,6 +154,8 @@ public class TVarAst extends TypeAst {
         char c = name.charAt(0);
         if(Character.isLowerCase(c))
             return context.resolveTypeVariable(name);
+        else if(c == '?')
+            return context.resolveExistential(name);
         else {
             Type con = context.resolveTypeConstructor(name);
             if(con == null) {