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(); } }