@@ -37,6 +37,7 @@ import Data.Maybe
37import Debug.Trace
37import Debug.Trace
39import qualified Data.Map as Map
39import qualified Data.Map as Map
40+import qualified Data.Set as S
40import qualified Data.Text as T
41import qualified Data.Text as T
41import Data.Char(isLetter, toLower)
42import Data.Char(isLetter, toLower)
42import Data.List.Split (splitOn)
43import Data.List.Split (splitOn)
@@ -204,8 +205,15 @@ inaccessibleArgs _ _ = []
205elabPostulate :: ElabInfo -> SyntaxInfo -> Docstring ->
206elabPostulate :: ElabInfo -> SyntaxInfo -> Docstring ->
206 FC -> FnOpts -> Name -> PTerm -> Idris ()
207 FC -> FnOpts -> Name -> PTerm -> Idris ()
207−elabPostulate info syn doc fc opts n ty
208+elabPostulate info syn doc fc opts n ty = do
208− = do elabType info syn doc [] fc opts n ty
209+ elabType info syn doc [] fc opts n ty
210+ putIState . (\ist -> ist{ idris_postulates = S.insert n (idris_postulates ist) }) =<< getIState
212+ -- remove it from the deferred definitions list
215+{- NB. this check has been superseded by usage analysis
209 -- make sure it's collapsible, so it is never needed at run time
217 -- make sure it's collapsible, so it is never needed at run time
210 -- start by getting the elaborated type
218 -- start by getting the elaborated type
211 ctxt <- getContext
219 ctxt <- getContext
@@ -214,6 +222,7 @@ elabPostulate info syn doc fc opts n ty
214 [ty] -> return ty
222 [ty] -> return ty
215 ist <- getIState
223 ist <- getIState
216 let (ap, _) = unApply (getRetTy (normalise ctxt [] fty))
224 let (ap, _) = unApply (getRetTy (normalise ctxt [] fty))
217 logLvl 5 $ "Checking collapsibility of " ++ show (ap, fty)
226 logLvl 5 $ "Checking collapsibility of " ++ show (ap, fty)
218 let postOK = case ap of
227 let postOK = case ap of
219 P _ tn _ -> case lookupCtxt tn
228 P _ tn _ -> case lookupCtxt tn
@@ -223,8 +232,8 @@ elabPostulate info syn doc fc opts n ty
223 _ -> False
232 _ -> False
224 when (not postOK)
233 when (not postOK)
225 $ tclift $ tfail (At fc (NonCollapsiblePostulate n))
234 $ tclift $ tfail (At fc (NonCollapsiblePostulate n))
226− -- remove it from the deferred definitions list
235+-}
229elabData :: ElabInfo -> SyntaxInfo -> Docstring -> [(Name, Docstring)] -> FC -> DataOpts -> PData -> Idris ()
238elabData :: ElabInfo -> SyntaxInfo -> Docstring -> [(Name, Docstring)] -> FC -> DataOpts -> PData -> Idris ()
230elabData info syn doc argDocs fc opts (PLaterdecl n t_in)
239elabData info syn doc argDocs fc opts (PLaterdecl n t_in)