1 package org.simantics.scl.compiler.tests.experimentation;
3 import org.junit.Assert;
5 import org.simantics.scl.compiler.environment.Environment;
6 import org.simantics.scl.compiler.environment.Environments;
7 import org.simantics.scl.compiler.module.repository.ImportFailureException;
8 import org.simantics.scl.compiler.tests.InitialRepository;
9 import org.simantics.scl.compiler.types.Type;
10 import org.simantics.scl.compiler.types.Types;
11 import org.simantics.scl.compiler.types.exceptions.UnificationException;
13 public class TestExistential {
15 public void testExistentialTypes() throws ImportFailureException, UnificationException {
16 Environment environment = InitialRepository.getDefaultEnvironment();
17 Type type1 = Environments.getType(environment, "?a -> String -> ?a");
18 Type type2 = Environments.getType(environment, "Integer -> ?b -> ?c");
19 Assert.assertEquals("a -> String -> a", type1.toString());
20 Assert.assertEquals("Integer -> a -> b", type2.toString());
21 Types.unify(type1, type2);
22 Assert.assertEquals("Integer -> String -> Integer", type1.toString());