on master help sign in
Update subclass display in 'subclasses' to use consistent parameter names
commit663d9eed7804710aa65336c1a3c8b36a7b884fd4 authorPaul Koerbitz <paul.koerbitz@theppro.com> dateFri 2 May 2014, 02:31 (12 years ago) parentbb00be2
1 file changed+19−6
src/Idris/Docs.hs+19−6
src/Idris/Docs.hs+19−6
@@ -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