aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordavve <davve@dtek.chalmers.se>2007-02-04 16:59:08 +0000
committerdavve <davve@dtek.chalmers.se>2007-02-04 16:59:08 +0000
commite93d48aff9e9b13f393e168e01b10de0bfd290f2 (patch)
treeca882232dedd88897511310a5a004d8e85c1f02a /src
parentda89db72eeab2a8c4cc7e7a237350e758ef14cc5 (diff)
Render infix type constructors properly
Diffstat (limited to 'src')
-rw-r--r--src/HaddockHtml.hs6
-rw-r--r--src/HaddockUtil.hs4
2 files changed, 8 insertions, 2 deletions
diff --git a/src/HaddockHtml.hs b/src/HaddockHtml.hs
index 2af6922d..59ca8501 100644
--- a/src/HaddockHtml.hs
+++ b/src/HaddockHtml.hs
@@ -1078,7 +1078,11 @@ expandField (HsFieldDecl ns ty doc) = [ HsFieldDecl [n] ty doc | n <- ns ]
ppDataHeader :: Bool -> NewOrData -> Name -> [Name] -> Html
ppDataHeader summary newOrData name tyvars =
(if newOrData == NewType then keyword "newtype" else keyword "data") <+>
- ppBinder summary name <+> hsep (map ppName tyvars)
+ (if infixConstr then ppName (tyvars!!0) <+> ppBinder summary name <+> ppName (tyvars!!1)
+ else ppBinder summary name <+> hsep (map ppName tyvars))
+ where
+ -- there should be a better way to check this using the GHC API
+ infixConstr = (head (nameOccString name) == ':') && (length tyvars == 2)
-- ----------------------------------------------------------------------------
-- Types and contexts
diff --git a/src/HaddockUtil.hs b/src/HaddockUtil.hs
index b80e8a1b..4d67f0d7 100644
--- a/src/HaddockUtil.hs
+++ b/src/HaddockUtil.hs
@@ -20,7 +20,7 @@ module HaddockUtil (
-- * Miscellaneous utilities
getProgramName, bye, die, dieMsg, noDieMsg, mapSnd, mapMaybeM, escapeStr,
- moduleString, mkModuleNoPkg,
+ nameOccString, moduleString, mkModuleNoPkg,
-- * HTML cross reference mapping
html_xrefs_ref,
@@ -231,6 +231,8 @@ escapeStr = flip escapeString unreserved
escapeStr = escapeURIString isUnreserved
#endif
+nameOccString = occNameString . nameOccName
+
moduleString :: Module -> String
moduleString = moduleNameString . moduleName