@@ -381,12 +381,25 @@ getNameHints i n =
381381 _ -> []
382382
383383addDeprecated :: Name -> String -> Idris ()
384−addDeprecated n reason = do i <- getIState
385− putIState $ i { idris_deprecated = addDef n reason (idris_deprecated i) }
384+addDeprecated n reason = do
385+ i <- getIState
386+ putIState $ i { idris_deprecated = addDef n reason (idris_deprecated i) }
386387
387388getDeprecated :: Name -> Idris (Maybe String)
388−getDeprecated n = do i <- getIState
389− return $ lookupCtxtExact n (idris_deprecated i)
389+getDeprecated n = do
390+ i <- getIState
391+ return $ lookupCtxtExact n (idris_deprecated i)
392+
393+
394+addFragile :: Name -> String -> Idris ()
395+addFragile n reason = do
396+ i <- getIState
397+ putIState $ i { idris_fragile = addDef n reason (idris_fragile i) }
398+
399+getFragile :: Name -> Idris (Maybe String)
400+getFragile n = do
401+ i <- getIState
402+ return $ lookupCtxtExact n (idris_fragile i)
390403
391404push_estack :: Name -> Bool -> Idris ()
392405push_estack n inst
@@ -658,7 +671,7 @@ addDeferred' nt ns
658671 = do mapM_ (\(n, (i, _, t, _, _, _)) -> updateContext (addTyDecl n nt (tidyNames S.empty t))) ns
659672 mapM_ (\(n, _) -> when (not (n `elem` primDefs)) $ addIBC (IBCMetavar n)) ns
660673 i <- getIState
661− putIState $ i { idris_metavars = map (\(n, (i, top, _, ns, isTopLevel, isDefinable)) ->
674+ putIState $ i { idris_metavars = map (\(n, (i, top, _, ns, isTopLevel, isDefinable)) ->
662675 (n, (top, i, ns, isTopLevel, isDefinable))) ns ++
663676 idris_metavars i }
664677 where
@@ -673,7 +686,7 @@ addDeferred' nt ns
673686 tidyNames used b = b
674687
675688solveDeferred :: FC -> Name -> Idris ()
676−solveDeferred fc n
689+solveDeferred fc n
677690 = do i <- getIState
678691 case lookup n (idris_metavars i) of
679692 Just (_, _, _, _, False) ->
@@ -1701,7 +1714,7 @@ addImpl' inpat env infns imp_meths ist ptm
17011714 ai :: Bool -> Bool -> [(Name, Maybe PTerm)] -> [[T.Text]] -> PTerm -> PTerm
17021715 ai inpat qq env ds (PRef fc fcs f)
17031716 | f `elem` infns = PInferRef fc fcs f
1704− | not (f `elem` map fst env) = handleErr $ aiFn topname inpat inpat qq imp_meths ist fc f fc ds []
1717+ | not (f `elem` map fst env) = handleErr $ aiFn topname inpat inpat qq imp_meths ist fc f fc ds []
17051718 ai inpat qq env ds (PHidden (PRef fc hl f))
17061719 | not (f `elem` map fst env) = PHidden (handleErr $ aiFn topname inpat False qq imp_meths ist fc f fc ds [])
17071720 ai inpat qq env ds (PRewrite fc by l r g)
@@ -1742,7 +1755,7 @@ addImpl' inpat env infns imp_meths ist ptm
17421755 = let f' = ai inpat qq env ds f
17431756 as' = map (fmap (ai inpat qq env ds)) as in
17441757 mkPApp fc 1 f' as'
1745− ai inpat qq env ds (PWithApp fc f a)
1758+ ai inpat qq env ds (PWithApp fc f a)
17461759 = PWithApp fc (ai inpat qq env ds f) (ai inpat qq env ds a)
17471760 ai inpat qq env ds (PCase fc c os)
17481761 = let c' = ai inpat qq env ds c in
@@ -1750,7 +1763,7 @@ addImpl' inpat env infns imp_meths ist ptm
17501763 -- definition which is passed through addImpl again
17511764 PCase fc c' (map aiCase os)
17521765 where
1753− aiCase (lhs, rhs)
1766+ aiCase (lhs, rhs)
17541767 = (lhs, ai inpat qq (env ++ patnames lhs) ds rhs)
17551768
17561769 -- Anything beginning with a lower case letter, not applied,
@@ -1854,9 +1867,9 @@ aiFn topname inpat True qq imp_meths ist fc f ffc ds []
18541867 vname (UN n) = True -- non qualified
18551868 vname _ = False
18561869
1857−aiFn topname inpat expat qq imp_meths ist fc f ffc ds as
1870+aiFn topname inpat expat qq imp_meths ist fc f ffc ds as
18581871 | f `elem` primNames = Right $ PApp fc (PRef ffc [ffc] f) as
1859−aiFn topname inpat expat qq imp_meths ist fc f ffc ds as
1872+aiFn topname inpat expat qq imp_meths ist fc f ffc ds as
18601873 -- This is where namespaces get resolved by adding PAlternative
18611874 = do let ns = lookupCtxtName f (idris_implicits ist)
18621875 let nh = filter (\(n, _) -> notHidden n) ns
@@ -1920,7 +1933,7 @@ aiFn topname inpat expat qq imp_meths ist fc f ffc ds as
19201933 case find n imps [] of
19211934 Just (tm, imps') ->
19221935 PImp p False l n tm : insImpAcc (M.insert n tm pnas) ps given imps'
1923− Nothing ->
1936+ Nothing ->
19241937 PImp p True l n Placeholder :
19251938 insImpAcc (M.insert n Placeholder pnas) ps given imps
19261939 insImpAcc pnas (PTacImplicit p l n sc' ty : ps) given imps =