]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/experimentation/TestExistential.java
(refs #7588) Support for existential type variables with syntax ?v
[simantics/platform.git] / tests / org.simantics.scl.compiler.tests / src / org / simantics / scl / compiler / tests / experimentation / TestExistential.java
diff --git a/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/experimentation/TestExistential.java b/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/experimentation/TestExistential.java
new file mode 100644 (file)
index 0000000..31f9981
--- /dev/null
@@ -0,0 +1,24 @@
+package org.simantics.scl.compiler.tests.experimentation;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.simantics.scl.compiler.environment.Environment;
+import org.simantics.scl.compiler.environment.Environments;
+import org.simantics.scl.compiler.module.repository.ImportFailureException;
+import org.simantics.scl.compiler.tests.InitialRepository;
+import org.simantics.scl.compiler.types.Type;
+import org.simantics.scl.compiler.types.Types;
+import org.simantics.scl.compiler.types.exceptions.UnificationException;
+
+public class TestExistential {
+    @Test
+    public void testExistentialTypes() throws ImportFailureException, UnificationException {
+        Environment environment = InitialRepository.getDefaultEnvironment();
+        Type type1 = Environments.getType(environment, "?a -> String -> ?a");
+        Type type2 = Environments.getType(environment, "Integer -> ?b -> ?c");
+        Assert.assertEquals("a -> String -> a", type1.toString());
+        Assert.assertEquals("Integer -> a -> b", type2.toString());
+        Types.unify(type1, type2);
+        Assert.assertEquals("Integer -> String -> Integer", type1.toString());
+    }
+}