@@ -89,16 +89,29 @@ pprintDocs imp (ClassDoc n doc meths params instances)
8989 <>
9090 if null subclasses then empty
9191 else line <$> nest 4 (text "Subclasses:" <$>
92− vsep (map (dumpInstance . remConstraint) subclasses))
92+ vsep (map (dumpInstance . prettifySubclasses) subclasses))
9393 where
94− params' = map (\x -> (fst x, False)) params
94+ params' = zip pNames (repeat False)
9595
96+ pNames = map fst params
97+
9698 dumpInstance :: PTerm -> Doc OutputAnnotation
9799 dumpInstance = pprintPTerm imp params' []
98100
99− remConstraint (PPi (Constraint _ _) _ tm _) = tm
100− remConstraint (PPi x y z pt) = PPi x y z (remConstraint pt)
101− remConstraint p = p
101+ prettifySubclasses (PPi (Constraint _ _) _ tm _) = prettifySubclasses tm
102+ prettifySubclasses (PPi plcity nm t1 t2) = PPi plcity (safeHead nm pNames) (prettifySubclasses t1) (prettifySubclasses t2)
103+ prettifySubclasses (PApp fc ref args) = PApp fc ref $ updateArgs pNames args
104+ prettifySubclasses tm = tm
105+
106+ safeHead _ (y:_) = y
107+ safeHead x [] = x
108+
109+ updateArgs (p:ps) ((PExp prty opts _ ref):as) = (PExp prty opts p (updateRef p ref)) : updateArgs ps as
110+ updateArgs ps (a:as) = a : updateArgs ps as
111+ updateArgs _ _ = []
112+
113+ updateRef nm (PRef fc _) = PRef fc nm
114+ updateRef _ pt = pt
102115
103116 hasConstraint (PPi (Constraint _ _) _ _ _) = True
104117 hasConstraint (PPi _ _ _ pt) = hasConstraint pt
@@ -107,7 +120,7 @@ pprintDocs imp (ClassDoc n doc meths params instances)
107120 (subclasses, instances') = partition hasConstraint instances
108121
109122 prettyParameters = if any (isJust . snd) params
110− then vsep (map (\(n,md) -> prettyName False params' n <+> maybe empty showDoc md) params)
123+ then vsep (map (\(nm,md) -> prettyName False params' nm <+> maybe empty showDoc md) params)
111124 else hsep (punctuate comma (map (prettyName False params' . fst) params))
112125
113126getDocs :: Name -> Idris Docs
@@ -129,7 +142,6 @@ docData n ti
129142docClass :: Name -> ClassInfo -> Idris Docs
130143docClass n ci
131144 = do i <- getIState
132− ctxt <- getContext
133145 let docStrings = listToMaybe $ lookupCtxt n $ idris_docstrings i
134146 docstr = maybe emptyDocstring fst docStrings
135147 params = map (\pn -> (pn, docStrings >>= (lookup pn . snd))) (class_params ci)