]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.scl.compiler.tests.experimentation;
2
3 import org.junit.Assert;
4 import org.junit.Test;
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;
12
13 public class TestExistential {
14     @Test
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());
23     }
24 }