@@ -24,6 +24,7 @@ import Parse.Parser (parseProgram)
24import Type.Solve (solve)
24import Type.Solve (solve)
25import qualified Type.State as TS
25import qualified Type.State as TS
26import Control.Monad.State
26import Control.Monad.State
27+import Transform.SortDefinitions as Sort
28test filePath = do
29test filePath = do
29 src <- readFile filePath
30 src <- readFile filePath
@@ -32,7 +33,9 @@ test filePath = do
32 Right (Module _ _ _ decls) -> do
33 Right (Module _ _ _ decls) -> do
33 env <- Env.initialEnvironment
34 env <- Env.initialEnvironment
34 var <- T.flexibleVar
35 var <- T.flexibleVar
36+ let expr = sortDefs (toExpr decls)
35− constraint <- TcExpr.constrain env (toExpr decls) (T.VarN var)
38+ constraint <- TcExpr.constrain env expr (T.VarN var)
36 print =<< T.extraPretty constraint
39 print =<< T.extraPretty constraint
37 (env,_,_,errors) <- execStateT (solve constraint) TS.initialState
40 (env,_,_,errors) <- execStateT (solve constraint) TS.initialState
38 forM (Map.toList env) $ \(n,t) -> do
41 forM (Map.toList env) $ \(n,t) -> do
@@ -43,7 +46,7 @@ test filePath = do
43 mapM_ print =<< sequence errors
46 mapM_ print =<< sequence errors
45toExpr decls =
48toExpr decls =
46− SL.none $ SE.Let (concatMap toDefs decls) (SL.none $ SE.Literal (SL.IntNum 0))
49+ SL.none $ SE.Let (concatMap toDefs decls) (SL.none $ SE.Literal (SL.IntNum 42))
48toDefs :: Declaration t v -> [SE.Def t v]
51toDefs :: Declaration t v -> [SE.Def t v]
49toDefs decl =
52toDefs decl =