@@ -29,8 +29,10 @@ directiveAction (DFlag cgn flag) = do
29directiveAction (DInclude cgn hdr) = do addHdr cgn hdr
29directiveAction (DInclude cgn hdr) = do addHdr cgn hdr
30 addIBC (IBCHeader cgn hdr)
30 addIBC (IBCHeader cgn hdr)
32+directiveAction (DHide n') = do i <- getIState
33+ ns <- allNamespaces n'
32−directiveAction (DHide n) = do setAccessibility n Hidden
34+ mapM_ (\n -> do setAccessibility n Hidden
33− addIBC (IBCAccess n Hidden)
35+ addIBC (IBCAccess n Hidden)) ns
35directiveAction (DFreeze n) = do setAccessibility n Frozen
37directiveAction (DFreeze n) = do setAccessibility n Frozen
36 addIBC (IBCAccess n Frozen)
38 addIBC (IBCAccess n Frozen)
@@ -80,3 +82,10 @@ disambiguate n = do i <- getIState
80 [(n', _)] -> return n'
82 [(n', _)] -> return n'
81 [] -> throwError (NoSuchVariable n)
83 [] -> throwError (NoSuchVariable n)
82 more -> throwError (CantResolveAlts (map fst more))
84 more -> throwError (CantResolveAlts (map fst more))
86+allNamespaces :: Name -> Idris [Name]
87+allNamespaces n = do i <- getIState
88+ case lookupCtxtName n (idris_implicits i) of
89+ [(n', _)] -> return [n']
90+ [] -> throwError (NoSuchVariable n)
91+ more -> return (map fst more)