@@ -173,25 +173,27 @@ elab ist info pattern opts fn tm
173 -- ++ "\n-----------\n") $
173 -- ++ "\n-----------\n") $
174 --trace ("ELAB " ++ show t') $
174 --trace ("ELAB " ++ show t') $
175 let fc = fileFC "Force"
175 let fc = fileFC "Force"
176− handleError forceErr
177+ handleError (forceErr env)
177 (elab' ina t')
178 (elab' ina t')
178 (elab' ina (PApp fc (PRef fc (sUN "Force"))
179 (elab' ina (PApp fc (PRef fc (sUN "Force"))
180+ [pimp (sUN "t") Placeholder True,
179− [pimp (sUN "a") Placeholder True,
181+ pimp (sUN "a") Placeholder True,
180 pexp ct])) True
182 pexp ct])) True
182− forceErr (CantUnify _ t t' _ _ _)
184+ forceErr env (CantUnify _ t t' _ _ _)
183− | (P _ (UN ht) _, _) <- unApply t,
185+ | (P _ (UN ht) _, _) <- unApply (normalise (tt_ctxt ist) env t),
184− ht == txt "Lazy" = True
186+ ht == txt "Lazy'" = True
185− forceErr (CantUnify _ t t' _ _ _)
187+ forceErr env (CantUnify _ t t' _ _ _)
186− | (P _ (UN ht) _, _) <- unApply t',
188+ | (P _ (UN ht) _, _) <- unApply (normalise (tt_ctxt ist) env t'),
187− ht == txt "Lazy" = True
189+ ht == txt "Lazy'" = True
188− forceErr (InfiniteUnify _ t _)
190+ forceErr env (InfiniteUnify _ t _)
189− | (P _ (UN ht) _, _) <- unApply t,
191+ | (P _ (UN ht) _, _) <- unApply (normalise (tt_ctxt ist) env t),
190− ht == txt "Lazy" = True
192+ ht == txt "Lazy'" = True
191− forceErr (Elaborating _ _ t) = forceErr t
193+ forceErr env (Elaborating _ _ t) = forceErr env t
192− forceErr (ElaboratingArg _ _ t) = forceErr t
194+ forceErr env (ElaboratingArg _ _ t) = forceErr env t
193− forceErr (At _ t) = forceErr t
195+ forceErr env (At _ t) = forceErr env t
194− forceErr t = False
196+ forceErr env t = False
196 local f = do e <- get_env
198 local f = do e <- get_env
197 return (f `elem` map fst e)
199 return (f `elem` map fst e)
@@ -688,13 +690,14 @@ elab ist info pattern opts fn tm
688 let (tyh, _) = unApply (normalise (tt_ctxt ist) env ty)
690 let (tyh, _) = unApply (normalise (tt_ctxt ist) env ty)
689 let tries = if pattern then [t, mkDelay t] else [mkDelay t, t]
691 let tries = if pattern then [t, mkDelay t] else [mkDelay t, t]
690 case tyh of
692 case tyh of
691− P _ (UN l) _ | l == txt "Lazy"
693+ P _ (UN l) _ | l == txt "Lazy'"
692 -> return (PAlternative False tries)
694 -> return (PAlternative False tries)
693 _ -> return t
695 _ -> return t
695 mkDelay (PAlternative b xs) = PAlternative b (map mkDelay xs)
697 mkDelay (PAlternative b xs) = PAlternative b (map mkDelay xs)
696 mkDelay t = let fc = fileFC "Delay" in
698 mkDelay t = let fc = fileFC "Delay" in
697− addImpl ist (PApp fc (PRef fc (sUN "Delay")) [pexp t])
699+ addImpl ist (PApp fc (PRef fc (sUN "Delay"))
699 insertCoerce ina t =
702 insertCoerce ina t =
700 do ty <- goal
703 do ty <- goal