@@ -32,7 +32,7 @@ data Docs' d = FunDoc (FunDoc' d)
3232 | ClassDoc Name d -- class docs
3333 [FunDoc' d] -- method docs
3434 [(Name, Maybe d)] -- parameters and their docstrings
35− [PTerm] -- instances
35+ [(PTerm, Docstring DocTerm)] -- instances and docs
3636 [PTerm] -- superclasses
3737 | ModDoc [String] -- Module name
3838 d
@@ -101,11 +101,11 @@ pprintDocs ist (ClassDoc n doc meths params instances superclasses)
101101 <$>
102102 nest 4 (text "Instances:" <$>
103103 vsep (if null instances' then [text "<no instances>"]
104− else map dumpInstance instances'))
104+ else map pprintInstance instances'))
105105 <>
106106 (if null subclasses then empty
107107 else line <$> nest 4 (text "Subclasses:" <$>
108− vsep (map (dumpInstance . prettifySubclasses) subclasses)))
108+ vsep (map (dumpInstance . prettifySubclasses . fst) subclasses)))
109109 <>
110110 (if null superclasses then empty
111111 else line <$> nest 4 (text "Default superclass instances:" <$>
@@ -118,6 +118,17 @@ pprintDocs ist (ClassDoc n doc meths params instances superclasses)
118118 ppo = ppOptionIst ist
119119 infixes = idris_infixes ist
120120
121+ pprintInstance (term, doc) =
122+ nest 2 (dumpInstance term <>
123+ if nullDocstring doc
124+ then empty
125+ else line <>
126+ renderDocstring
127+ (renderDocTerm
128+ (pprintDelab ist)
129+ (normaliseAll (tt_ctxt ist) []))
130+ doc)
131+
121132 dumpInstance :: PTerm -> Doc OutputAnnotation
122133 dumpInstance = pprintPTerm ppo params' [] infixes
123134
@@ -140,7 +151,7 @@ pprintDocs ist (ClassDoc n doc meths params instances superclasses)
140151 isSubclass (PPi _ _ _ pt) = isSubclass pt
141152 isSubclass _ = False
142153
143− (subclasses, instances') = partition isSubclass instances
154+ (subclasses, instances') = partition (isSubclass . fst) instances
144155
145156 prettyParameters = if any (isJust . snd) params
146157 then vsep (map (\(nm,md) -> prettyName True False params' nm <+> maybe empty (showDoc ist) md) params)
@@ -186,10 +197,14 @@ docClass n ci
186197 let docStrings = listToMaybe $ lookupCtxt n $ idris_docstrings i
187198 docstr = maybe emptyDocstring fst docStrings
188199 params = map (\pn -> (pn, docStrings >>= (lookup pn . snd))) (class_params ci)
200+ instanceDocs = map (maybe emptyDocstring fst .
201+ listToMaybe .
202+ flip lookupCtxt (idris_docstrings i))
203+ (class_instances ci)
189204 instances = map (delabTy i) (class_instances ci)
190205 superclasses = catMaybes $ map getDInst (class_default_superclasses ci)
191206 mdocs <- mapM (docFun . fst) (class_methods ci)
192− return $ ClassDoc n docstr mdocs params instances superclasses
207+ return $ ClassDoc n docstr mdocs params (zip instances instanceDocs) superclasses
193208 where
194209 getDInst (PInstance _ _ _ _ _ _ t _ _) = Just t
195210 getDInst _ = Nothing