@@ -497,8 +497,7 @@ inferBinder val (NamedBinder name binder) = do
497497inferGuardedBinder :: M.Map Ident Type -> Type -> Binder -> Subst Check (M.Map Ident Type)
498498inferGuardedBinder m val (GuardedBinder cond binder) = do
499499 m1 <- inferBinder val binder
500− ty <- infer (m `M.union` m1) cond
501− ty ~~ Boolean
500+ check (m1 `M.union` m) cond Boolean
502501 return m1
503502inferGuardedBinder m val b = inferBinder val b
504503
@@ -506,7 +505,7 @@ checkBinders :: M.Map Ident Type -> Type -> Type -> [(Binder, Value)] -> Subst C
506505checkBinders _ _ _ [] = return ()
507506checkBinders m nval ret ((binder, val):bs) = do
508507 m1 <- inferGuardedBinder m nval binder
509− check (m `M.union` m1) val ret
508+ check (m1 `M.union` m) val ret
510509 checkBinders m nval ret bs
511510
512511assignVariable :: Ident -> M.Map Ident Type -> Subst Check ()