@@ -7,6 +7,7 @@ import Idris.Core.CaseTree
77import Idris.Core.TT
88import Idris.Core.Evaluate
99import Idris.Primitives
10+import Idris.Error
1011
1112import Debug.Trace
1213import System.IO.Unsafe
@@ -102,8 +103,12 @@ performUsageAnalysis = do
102103 checkAccessibility opt (n, reachable)
103104 | [Optimise col nt forc rec inaccessible] <- lookupCtxt n opt
104105 = let collision = IS.fromList inaccessible `IS.intersection` reachable
105− in unless (IS.null collision)
106− . fail $ "Erasure checker: inaccessible arguments reachable: " ++ show (IS.toList collision)
106+ in unless (IS.null collision) . ifail . concat $
107+ [ "Erasure checker: in function "
108+ , show n
109+ , ": inaccessible arguments reachable: "
110+ , show (IS.toList collision)
111+ ]
107112
108113 | otherwise = return ()
109114