on master help sign in
Flip some constraints around to match how they are displayed
55c1099Evan Czaplicki
src/Type/Constrain/Expression.hs+5−5
@@ -89,7 +89,7 @@ constrain env annotatedExpr@(A.A region expression) tipe =
89 (CLet [monoscheme (Fragment.typeEnv fragment)]
89 (CLet [monoscheme (Fragment.typeEnv fragment)]
90 (Fragment.typeConstraint fragment /\ bodyCon)
90 (Fragment.typeConstraint fragment /\ bodyCon)
91 )
91 )
92− return $ con /\ CEqual Error.Lambda region tipe (argType ==> resType)
92+ return $ con /\ CEqual Error.Lambda region (argType ==> resType) tipe
93
93
94 E.App _ _ ->
94 E.App _ _ ->
95 let
95 let
@@ -125,7 +125,7 @@ constrain env annotatedExpr@(A.A region expression) tipe =
125
125
126 newVars <- mapM (\_ -> mkVar Nothing) fields
126 newVars <- mapM (\_ -> mkVar Nothing) fields
127 let newFields = Map.fromList (zip (map fst fields) (map VarN newVars))
127 let newFields = Map.fromList (zip (map fst fields) (map VarN newVars))
128− let cNew = CEqual Error.Record region tipe (record newFields t)
128+ let cNew = CEqual Error.Record region (record newFields t) tipe
129
129
130 cs <- Monad.zipWithM (constrain env) (map snd fields) (map VarN newVars)
130 cs <- Monad.zipWithM (constrain env) (map snd fields) (map VarN newVars)
131
131
@@ -140,7 +140,7 @@ constrain env annotatedExpr@(A.A region expression) tipe =
140 (map VarN vars)
140 (map VarN vars)
141 let fields' = Map.fromList (zip (map fst fields) (map VarN vars))
141 let fields' = Map.fromList (zip (map fst fields) (map VarN vars))
142 let recordType = record fields' (TermN EmptyRecord1)
142 let recordType = record fields' (TermN EmptyRecord1)
143− return (ex vars (CAnd (fieldCons ++ [CEqual Error.Record region tipe recordType])))
143+ return (ex vars (CAnd (fieldCons ++ [CEqual Error.Record region recordType tipe])))
144
144
145 E.Let defs body ->
145 E.Let defs body ->
146 do bodyCon <- constrain env body tipe
146 do bodyCon <- constrain env body tipe
@@ -281,7 +281,7 @@ constrainBinop env region op leftExpr@(A.A leftRegion _) rightExpr@(A.A rightReg
281 , CInstance region (V.toString op) opType
281 , CInstance region (V.toString op) opType
282 , CEqual (Error.BinopLeft op leftRegion) region (VarN leftVar') (VarN leftVar)
282 , CEqual (Error.BinopLeft op leftRegion) region (VarN leftVar') (VarN leftVar)
283 , CEqual (Error.BinopRight op rightRegion) region (VarN rightVar') (VarN rightVar)
283 , CEqual (Error.BinopRight op rightRegion) region (VarN rightVar') (VarN rightVar)
284− , CEqual (Error.Binop op) region tipe (VarN answerVar)
284+ , CEqual (Error.Binop op) region (VarN answerVar) tipe
285 ]
285 ]
286
286
287
287
@@ -307,7 +307,7 @@ constrainList env region exprs tipe =
307 return ( (var, region'), con )
307 return ( (var, region'), con )
308
308
309 varToCon var =
309 varToCon var =
310− CEqual Error.List region tipe (Env.getType env "List" <| VarN var)
310+ CEqual Error.List region (Env.getType env "List" <| VarN var) tipe
311
311
312
312
313-- CONSTRAIN IF EXPRESSIONS
313-- CONSTRAIN IF EXPRESSIONS