on master help sign in
Reverse the reversible errors while reflecting

This makes Eff error reflection much more readable.

commita23e89f39e891f451a04ad714cc13214f5078a40 authorDavid Raymond Christiansen <david@davidchristiansen.dk> dateTue 11 Mar 2014, 10:48 (13 years ago) parent5e0a984
1 file changed+3−1
src/Idris/ElabTerm.hs+3−1
src/Idris/ElabTerm.hs+3−1
@@ -13,6 +13,7 @@ import Idris.Core.TT
1313import Idris.Core.Evaluate
1414import Idris.Core.Unify
1515import Idris.Core.Typecheck (check)
16+import Idris.ErrReverse (errReverse)
1617
1718import Control.Applicative ((<$>))
1819import Control.Monad
@@ -1627,10 +1628,11 @@ withErrorReflection x = idrisCatch x (\ e -> handle e >>= ierror)
16271628 err' <- handle err
16281629 return (Elaborating what n err')
16291630 handle e = do ist <- getIState
1631+ let err = fmap (errReverse ist) e
16301632 logLvl 2 "Starting error reflection"
16311633 let handlers = idris_errorhandlers ist
16321634 logLvl 3 $ "Using reflection handlers " ++ concat (intersperse ", " (map show handlers))
1633− let reports = map (\n -> RApp (Var n) (reflectErr e)) handlers
1635+ let reports = map (\n -> RApp (Var n) (reflectErr err)) handlers
16341636
16351637 -- Typecheck error handlers - if this fails, then something else was wrong earlier!
16361638 handlers <- case mapM (check (tt_ctxt ist) []) reports of