aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>2014-07-28 14:31:03 +0200
committerMateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>2014-08-15 02:47:40 +0100
commit08db4c81ffac672a4a5a90291be70279e9a1f098 (patch)
treecc51e2fa2fdc49b64a584b990a66752a152a3d8f /src
parent5c93cc347773c7634321edd5f808d5b55b46301f (diff)
Fix #313 by doing some list munging.
I get rid of the Monoid instance because we weren't satisfying the laws. Convenience of having <> didn't outweigh the shock-factor of having it behave badly.
Diffstat (limited to 'src')
-rw-r--r--src/Haddock/Doc.hs3
-rw-r--r--src/Haddock/Interface/Create.hs7
-rw-r--r--src/Haddock/Interface/LexParseRn.hs4
3 files changed, 8 insertions, 6 deletions
diff --git a/src/Haddock/Doc.hs b/src/Haddock/Doc.hs
index 79a59ac2..91ad709f 100644
--- a/src/Haddock/Doc.hs
+++ b/src/Haddock/Doc.hs
@@ -5,14 +5,13 @@ module Haddock.Doc ( module Documentation.Haddock.Doc
) where
import Data.Maybe
-import Data.Monoid
import Documentation.Haddock.Doc
import Haddock.Types
combineDocumentation :: Documentation name -> Maybe (Doc name)
combineDocumentation (Documentation Nothing Nothing) = Nothing
combineDocumentation (Documentation mDoc mWarning) =
- Just (fromMaybe mempty mWarning <> fromMaybe mempty mDoc)
+ Just (fromMaybe DocEmpty mWarning `docAppend` fromMaybe DocEmpty mDoc)
-- Drop trailing whitespace from @..@ code blocks. Otherwise this:
--
diff --git a/src/Haddock/Interface/Create.hs b/src/Haddock/Interface/Create.hs
index bc615cde..cf7ed841 100644
--- a/src/Haddock/Interface/Create.hs
+++ b/src/Haddock/Interface/Create.hs
@@ -14,7 +14,7 @@
-----------------------------------------------------------------------------
module Haddock.Interface.Create (createInterface) where
-
+import Documentation.Haddock.Doc (docAppend)
import Haddock.Types
import Haddock.Options
import Haddock.GhcUtils
@@ -251,11 +251,14 @@ mkMaps :: DynFlags
-> Maps
mkMaps dflags gre instances decls =
let (a, b, c, d) = unzip4 $ map mappings decls
- in (f $ map (nubBy ((==) `on` fst)) a , f b, f c, f d, instanceMap)
+ in (f' $ map (nubBy ((==) `on` fst)) a , f b, f c, f d, instanceMap)
where
f :: (Ord a, Monoid b) => [[(a, b)]] -> Map a b
f = M.fromListWith (<>) . concat
+ f' :: [[(Name, Doc Name)]] -> Map Name (Doc Name)
+ f' = M.fromListWith docAppend . concat
+
mappings :: (LHsDecl Name, [HsDocString])
-> ( [(Name, Doc Name)]
, [(Name, Map Int (Doc Name))]
diff --git a/src/Haddock/Interface/LexParseRn.hs b/src/Haddock/Interface/LexParseRn.hs
index 54c7351d..f1021436 100644
--- a/src/Haddock/Interface/LexParseRn.hs
+++ b/src/Haddock/Interface/LexParseRn.hs
@@ -21,7 +21,7 @@ module Haddock.Interface.LexParseRn
import Control.Applicative
import Data.IntSet (toList)
import Data.List
-import Data.Monoid (mconcat)
+import Documentation.Haddock.Doc (docConcat)
import DynFlags (ExtensionFlag(..), languageExtensions)
import FastString
import GHC
@@ -34,7 +34,7 @@ import RdrName
processDocStrings :: DynFlags -> GlobalRdrEnv -> [HsDocString] -> Maybe (Doc Name)
processDocStrings dflags gre strs =
- case mconcat $ map (processDocStringParas dflags gre) strs of
+ case docConcat $ map (processDocStringParas dflags gre) strs of
DocEmpty -> Nothing
x -> Just x