@@ -53,17 +53,26 @@ showDoc ist d
5353 | otherwise = text " -- " <>
5454 renderDocstring (renderDocTerm (pprintDelab ist) (normaliseAll (tt_ctxt ist) [])) d
5555
56−pprintFD :: IState -> FunDoc -> Doc OutputAnnotation
57−pprintFD ist (FD n doc args ty f)
56+pprintFD :: IState -> Bool -> FunDoc -> Doc OutputAnnotation
57+pprintFD ist totalityFlag (FD n doc args ty f)
5858 = nest 4 (prettyName True (ppopt_impl ppo) [] n <+> colon <+>
5959 pprintPTerm ppo [] [ n | (n@(UN n'),_,_,_) <- args
6060 , not (T.isPrefixOf (T.pack "__") n') ] infixes ty <$>
61+ -- show doc
6162 renderDocstring (renderDocTerm (pprintDelab ist) (normaliseAll (tt_ctxt ist) [])) doc <$>
63+ -- show fixity
6264 maybe empty (\f -> text (show f) <> line) f <>
65+ -- show arguments doc
6366 let argshow = showArgs args [] in
64− if not (null argshow)
67+ (if not (null argshow)
6568 then nest 4 $ text "Arguments:" <$> vsep argshow
66− else empty)
69+ else empty) <>
70+ -- show totality status
71+ let totality = getTotality in
72+ (if totalityFlag && not (null totality) then
73+ line <> (vsep . map (\t -> text "The function is" <+> t) $ totality)
74+ else
75+ empty))
6776
6877 where ppo = ppOptionIst ist
6978 infixes = idris_infixes ist
@@ -87,15 +96,21 @@ pprintFD ist (FD n doc args ty f)
8796 showArgs args ((n, True):bnd)
8897 showArgs ((n, _, _, _):args) bnd = showArgs args ((n, True):bnd)
8998 showArgs [] _ = []
99+ getTotality = map (text . show) $ lookupTotal n (tt_ctxt ist)
90100
101+pprintFDWithTotality :: IState -> FunDoc -> Doc OutputAnnotation
102+pprintFDWithTotality ist = pprintFD ist True
103+
104+pprintFDWithoutTotality :: IState -> FunDoc -> Doc OutputAnnotation
105+pprintFDWithoutTotality ist = pprintFD ist False
91106
92107pprintDocs :: IState -> Docs -> Doc OutputAnnotation
93−pprintDocs ist (FunDoc d) = pprintFD ist d
108+pprintDocs ist (FunDoc d) = pprintFDWithTotality ist d
94109pprintDocs ist (DataDoc t args)
95− = text "Data type" <+> pprintFD ist t <$>
110+ = text "Data type" <+> pprintFDWithoutTotality ist t <$>
96111 if null args then text "No constructors."
97112 else nest 4 (text "Constructors:" <> line <>
98− vsep (map (pprintFD ist) args))
113+ vsep (map (pprintFDWithoutTotality ist) args))
99114pprintDocs ist (ClassDoc n doc meths params instances subclasses superclasses ctor)
100115 = nest 4 (text "Type class" <+> prettyName True (ppopt_impl ppo) [] n <>
101116 if nullDocstring doc
@@ -105,12 +120,12 @@ pprintDocs ist (ClassDoc n doc meths params instances subclasses superclasses ct
105120 nest 4 (text "Parameters:" <$> prettyParameters)
106121 <> line <$>
107122 nest 4 (text "Methods:" <$>
108− vsep (map (pprintFD ist) meths))
123+ vsep (map (pprintFDWithTotality ist) meths))
109124 <$>
110125 maybe empty
111126 ((<> line) . nest 4 .
112127 (text "Instance constructor:" <$>) .
113− pprintFD ist)
128+ pprintFDWithoutTotality ist)
114129 ctor
115130 <>
116131 nest 4 (text "Instances:" <$>
@@ -195,7 +210,7 @@ pprintDocs ist (ClassDoc n doc meths params instances subclasses superclasses ct
195210 else hsep (punctuate comma (map (prettyName True False params' . fst) params))
196211
197212pprintDocs ist (NamedInstanceDoc _cls doc)
198− = nest 4 (text "Named instance:" <$> pprintFD ist doc)
213+ = nest 4 (text "Named instance:" <$> pprintFDWithoutTotality ist doc)
199214
200215pprintDocs ist (ModDoc mod docs)
201216 = nest 4 $ text "Module" <+> text (concat (intersperse "." mod)) <> colon <$>