@@ -29,8 +29,10 @@ directiveAction (DFlag cgn flag) = do
2929directiveAction (DInclude cgn hdr) = do addHdr cgn hdr
3030 addIBC (IBCHeader cgn hdr)
3131
32−directiveAction (DHide n) = do setAccessibility n Hidden
33− addIBC (IBCAccess n Hidden)
32+directiveAction (DHide n') = do i <- getIState
33+ ns <- allNamespaces n'
34+ mapM_ (\n -> do setAccessibility n Hidden
35+ addIBC (IBCAccess n Hidden)) ns
3436
3537directiveAction (DFreeze n) = do setAccessibility n Frozen
3638 addIBC (IBCAccess n Frozen)
@@ -80,3 +82,10 @@ disambiguate n = do i <- getIState
8082 [(n', _)] -> return n'
8183 [] -> throwError (NoSuchVariable n)
8284 more -> throwError (CantResolveAlts (map fst more))
85+
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)