@@ -13,6 +13,7 @@ import Idris.Core.TT
13import Idris.Core.Evaluate
13import Idris.Core.Evaluate
14import Idris.Core.Unify
14import Idris.Core.Unify
15import Idris.Core.Typecheck (check)
15import Idris.Core.Typecheck (check)
16+import Idris.ErrReverse (errReverse)
17import Control.Applicative ((<$>))
18import Control.Applicative ((<$>))
18import Control.Monad
19import Control.Monad
@@ -1627,10 +1628,11 @@ withErrorReflection x = idrisCatch x (\ e -> handle e >>= ierror)
1627 err' <- handle err
1628 err' <- handle err
1628 return (Elaborating what n err')
1629 return (Elaborating what n err')
1629 handle e = do ist <- getIState
1630 handle e = do ist <- getIState
1631+ let err = fmap (errReverse ist) e
1630 logLvl 2 "Starting error reflection"
1632 logLvl 2 "Starting error reflection"
1631 let handlers = idris_errorhandlers ist
1633 let handlers = idris_errorhandlers ist
1632 logLvl 3 $ "Using reflection handlers " ++ concat (intersperse ", " (map show handlers))
1634 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
1635 -- Typecheck error handlers - if this fails, then something else was wrong earlier!
1637 -- Typecheck error handlers - if this fails, then something else was wrong earlier!
1636 handlers <- case mapM (check (tt_ctxt ist) []) reports of
1638 handlers <- case mapM (check (tt_ctxt ist) []) reports of