@@ -1,5 +1,5 @@
11{-# LANGUAGE PatternGuards #-}
2−module Idris.Docs where
2+module Idris.Docs (pprintDocs, getDocs, FunDoc(..), Docs (..)) where
33
44import Idris.AbsSyntax
55import Idris.AbsSyntaxTree
@@ -34,11 +34,11 @@ data Docs = FunDoc FunDoc
3434showDoc d | nullDocstring d = empty
3535 | otherwise = text " -- " <> renderDocstring d
3636
37−pprintFD :: Bool -> FunDoc -> Doc OutputAnnotation
38−pprintFD imp (FD n doc args ty f)
37+pprintFD :: IState -> FunDoc -> Doc OutputAnnotation
38+pprintFD ist (FD n doc args ty f)
3939 = nest 4 (prettyName imp [] n <+> colon <+>
4040 pprintPTerm imp [] [ n | (n@(UN n'),_,_,_) <- args
41− , not (T.isPrefixOf (T.pack "__") n') ] ty <$>
41+ , not (T.isPrefixOf (T.pack "__") n') ] infixes ty <$>
4242 renderDocstring doc <$>
4343 maybe empty (\f -> text (show f) <> line) f <>
4444 let argshow = showArgs args [] in
@@ -46,21 +46,23 @@ pprintFD imp (FD n doc args ty f)
4646 then nest 4 $ text "Arguments:" <$> vsep argshow
4747 else empty)
4848
49− where showArgs ((n, ty, Exp {}, Just d):args) bnd
49+ where imp = opt_showimp (idris_options ist)
50+ infixes = idris_infixes ist
51+ showArgs ((n, ty, Exp {}, Just d):args) bnd
5052 = bindingOf n False <+> colon <+>
51− pprintPTerm imp bnd [] ty <>
53+ pprintPTerm imp bnd [] infixes ty <>
5254 showDoc d <> line
5355 :
5456 showArgs args ((n, False):bnd)
5557 showArgs ((n, ty, Constraint {}, Just d):args) bnd
5658 = text "Class constraint" <+>
57− pprintPTerm imp bnd [] ty <> showDoc d <> line
59+ pprintPTerm imp bnd [] infixes ty <> showDoc d <> line
5860 :
5961 showArgs args ((n, True):bnd)
6062 showArgs ((n, ty, Imp {}, Just d):args) bnd
6163 = text "(implicit)" <+>
6264 bindingOf n True <+> colon <+>
63− pprintPTerm imp bnd [] ty <>
65+ pprintPTerm imp bnd [] infixes ty <>
6466 showDoc d <> line
6567 :
6668 showArgs args ((n, True):bnd)
@@ -68,20 +70,20 @@ pprintFD imp (FD n doc args ty f)
6870 showArgs [] _ = []
6971
7072
71−pprintDocs :: Bool -> Docs -> Doc OutputAnnotation
72−pprintDocs imp (FunDoc d) = pprintFD imp d
73−pprintDocs imp (DataDoc t args)
74− = text "Data type" <+> pprintFD imp t <$>
73+pprintDocs :: IState -> Docs -> Doc OutputAnnotation
74+pprintDocs ist (FunDoc d) = pprintFD ist d
75+pprintDocs ist (DataDoc t args)
76+ = text "Data type" <+> pprintFD ist t <$>
7577 nest 4 (text "Constructors:" <> line <>
76− vsep (map (pprintFD imp) args))
77−pprintDocs imp (ClassDoc n doc meths params instances)
78+ vsep (map (pprintFD ist) args))
79+pprintDocs ist (ClassDoc n doc meths params instances)
7880 = nest 4 (text "Type class" <+> prettyName imp [] n <>
7981 if nullDocstring doc then empty else line <> renderDocstring doc)
8082 <> line <$>
8183 nest 4 (text "Parameters:" <$> prettyParameters)
8284 <> line <$>
8385 nest 4 (text "Methods:" <$>
84− vsep (map (pprintFD imp) meths))
86+ vsep (map (pprintFD ist) meths))
8587 <$>
8688 nest 4 (text "Instances:" <$>
8789 vsep (if null instances' then [text "<no instances>"]
@@ -94,9 +96,12 @@ pprintDocs imp (ClassDoc n doc meths params instances)
9496 params' = zip pNames (repeat False)
9597
9698 pNames = map fst params
97−
99+
100+ imp = opt_showimp (idris_options ist)
101+ infixes = idris_infixes ist
102+
98103 dumpInstance :: PTerm -> Doc OutputAnnotation
99− dumpInstance = pprintPTerm imp params' []
104+ dumpInstance = pprintPTerm imp params' [] infixes
100105
101106 prettifySubclasses (PPi (Constraint _ _) _ tm _) = prettifySubclasses tm
102107 prettifySubclasses (PPi plcity nm t1 t2) = PPi plcity (safeHead nm pNames) (prettifySubclasses t1) (prettifySubclasses t2)