@@ -110,10 +110,12 @@ loadSource lidr f
110110 namespaces (x:xs) ds = [PNamespace x (namespaces xs ds)]
111111
112112addHides :: [(Name, Maybe Accessibility)] -> Idris ()
113−addHides xs = let (hs, as) = partition isNothing xs in
114− if null as then return ()
115− else mapM_ doHide
116− (map (\ (n, _) -> (n, Hidden)) hs ++
113+addHides xs = do i <- getIState
114+ let defh = default_access i
115+ let (hs, as) = partition isNothing xs
116+ if null as then return ()
117+ else mapM_ doHide
118+ (map (\ (n, _) -> (n, defh)) hs ++
117119 map (\ (n, Just a) -> (n, a)) as)
118120 where isNothing (_, Nothing) = True
119121 isNothing _ = False
@@ -484,11 +486,15 @@ pName = do i <- getState
484486pfName = try pName
485487 <|> do lchar '('; o <- operator; lchar ')'; return (UN o)
486488
489+pAccessibility' :: IParser Accessibility
490+pAccessibility'
491+ = do reserved "public"; return Public
492+ <|> do reserved "abstract"; return Frozen
493+ <|> do reserved "private"; return Hidden
494+
487495pAccessibility :: IParser (Maybe Accessibility)
488496pAccessibility
489− = do reserved "public"; return (Just Public)
490− <|> do reserved "abstract"; return (Just Frozen)
491− <|> do reserved "private"; return (Just Hidden)
497+ = do acc <- pAccessibility'; return (Just acc)
492498 <|> return Nothing
493499
494500addAcc :: Name -> Maybe Accessibility -> IParser ()
@@ -908,6 +914,9 @@ pDirective = try (do lchar '%'; reserved "lib"; lib <- strlit;
908914 <|> try (do lchar '%'; reserved "freeze"; n <- iName []
909915 return [PDirective (do setAccessibility n Frozen
910916 addIBC (IBCAccess n Frozen))])
917+ <|> try (do lchar '%'; reserved "access"; acc <- pAccessibility'
918+ return [PDirective (do i <- getIState
919+ putIState (i { default_access = acc }))])
911920 <|> do lchar '%'; reserved "logging"; i <- natural;
912921 return [PDirective (setLogLevel (fromInteger i))]
913922