--- /dev/null
+package org.simantics.scl.compiler.tests.unit;
+
+import org.junit.Test;
+import org.simantics.scl.compiler.environment.Environment;
+import org.simantics.scl.compiler.environment.specification.EnvironmentSpecification;
+import org.simantics.scl.compiler.errors.Locations;
+import org.simantics.scl.compiler.internal.elaboration.constraints2.ConstraintSolver;
+import org.simantics.scl.compiler.tests.TestBase;
+import org.simantics.scl.compiler.types.TCon;
+import org.simantics.scl.compiler.types.TMetaVar;
+import org.simantics.scl.compiler.types.Types;
+import org.simantics.scl.compiler.types.kinds.Kinds;
+
+public class TestConstraintSolver {
+
+ public final TCon COLLECTION = Types.con("Collection", "Collection");
+
+ @Test
+ public void testConstraintSolver() throws Exception {
+ EnvironmentSpecification environmentSpecification = new EnvironmentSpecification();
+ environmentSpecification.importModule("Builtin", "");
+ environmentSpecification.importModule("Prelude", "");
+ environmentSpecification.importModule("Collection", "");
+
+ Environment environment = TestBase.PRELUDE_MODULE_REPOSITORY
+ .createRuntimeEnvironment(environmentSpecification,
+ getClass().getClassLoader()).getEnvironment();
+
+ ConstraintSolver solver = new ConstraintSolver(environment);
+
+ TMetaVar a = Types.metaVar(Kinds.STAR);
+ TMetaVar b = Types.metaVar(Kinds.STAR);
+ solver.addDemand(Types.pred(COLLECTION, Types.list(a), b), Locations.NO_LOCATION);
+
+ solver.print();
+ }
+
+}