purescript 0.1.4 → 0.1.5
raw patch · 2 files changed
+9/−6 lines, 2 files
Files
purescript.cabal view
@@ -1,5 +1,5 @@ name: purescript-version: 0.1.4+version: 0.1.5 cabal-version: >=1.8 build-type: Simple license: MIT
src/Language/PureScript/TypeChecker/Types.hs view
@@ -436,18 +436,21 @@ me <- fresh (cs, m) <- typeConstraintsForBinder val binder return (TypeConstraint me (TUnknown val) (BinderOrigin b) : cs, M.insert name me m)-typeConstraintsForBinder val b@(GuardedBinder cond binder) = do- (cs1, m) <- typeConstraintsForBinder val binder- (cs2, n) <- typeConstraints m cond- return (TypeConstraint n Boolean (ValueOrigin cond) : cs1 ++ cs2, m) +typeConstraintsForGuardedBinder :: M.Map Ident Int -> Int -> Binder -> Check ([TypeConstraint], M.Map Ident Int)+typeConstraintsForGuardedBinder m val b@(GuardedBinder cond binder) = do+ (cs1, m1) <- typeConstraintsForBinder val binder+ (cs2, n) <- typeConstraints (m `M.union` m1) cond+ return (TypeConstraint n Boolean (ValueOrigin cond) : cs1 ++ cs2, m1)+typeConstraintsForGuardedBinder m val b = typeConstraintsForBinder val b >>= return+ constantBinder :: Binder -> Int -> Type -> Check ([TypeConstraint], M.Map Ident Int) constantBinder b val ty = return ([TypeConstraint val ty (BinderOrigin b)], M.empty) typeConstraintsForBinders :: M.Map Ident Int -> Int -> Int -> [(Binder, Value)] -> Check [TypeConstraint] typeConstraintsForBinders _ _ _ [] = return [] typeConstraintsForBinders m nval ret ((binder, val):bs) = do- (cs1, m1) <- typeConstraintsForBinder nval binder+ (cs1, m1) <- typeConstraintsForGuardedBinder m nval binder (cs2, n2) <- typeConstraints (m `M.union` m1) val cs3 <- typeConstraintsForBinders m nval ret bs return (TypeConstraint n2 (TUnknown ret) (BinderOrigin binder) : cs1 ++ cs2 ++ cs3)