Commit dab0e515 authored by Herbert Valerio Riedel's avatar Herbert Valerio Riedel 🕺

Canonicalise Monoid instances in GHC

IOW, code compiles -Wnoncanonical-monoid-instances clean now
parent 400ead81
......@@ -73,7 +73,10 @@ Library
Build-Depends: terminfo == 0.4.*
Build-Depends: unix == 2.7.*
GHC-Options: -Wall -fno-warn-name-shadowing
GHC-Options: -Wall
-Wno-name-shadowing
-Wnoncanonical-monad-instances
-Wnoncanonical-monoid-instances
if flag(ghci)
CPP-Options: -DGHCI
......
......@@ -1867,8 +1867,7 @@ instance Semigroup LlvmAccum where
instance Monoid LlvmAccum where
mempty = LlvmAccum nilOL []
LlvmAccum stmtsA declsA `mappend` LlvmAccum stmtsB declsB =
LlvmAccum (stmtsA `mappend` stmtsB) (declsA `mappend` declsB)
mappend = (Semigroup.<>)
liftExprData :: LlvmM ExprData -> WriterT LlvmAccum LlvmM LlvmVar
liftExprData action = do
......
......@@ -251,8 +251,7 @@ instance Semigroup Report where
instance Monoid Report where
mempty = Report [] [] []
mappend (Report a1 b1 c1) (Report a2 b2 c2)
= Report (a1 ++ a2) (b1 ++ b2) (c1 ++ c2)
mappend = (Semigroup.<>)
-- | Put a doc into the important msgs block.
important :: SDoc -> Report
......
......@@ -41,7 +41,7 @@ instance Semigroup (OrdList a) where
instance Monoid (OrdList a) where
mempty = nilOL
mappend = appOL
mappend = (Semigroup.<>)
mconcat = concatOL
instance Functor OrdList where
......
......@@ -49,7 +49,7 @@ import UniqFM
import Unique
import Outputable
import Data.Semigroup ( Semigroup(..) )
import Data.Semigroup as Semi ( Semigroup(..) )
import Data.Coerce
import Data.Maybe
import Data.Typeable
......@@ -65,7 +65,7 @@ instance Semigroup (UniqMap k a) where
instance Monoid (UniqMap k a) where
mempty = emptyUniqMap
mappend = plusUniqMap
mappend = (Semi.<>)
instance (Outputable k, Outputable a) => Outputable (UniqMap k a) where
ppr (UniqMap m) =
......
......@@ -52,7 +52,7 @@ import Data.Coerce
import Outputable
import Data.Foldable (foldl')
import Data.Data
import qualified Data.Semigroup
import qualified Data.Semigroup as Semi
-- Note [UniqSet invariant]
-- ~~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -61,7 +61,8 @@ import qualified Data.Semigroup
-- It means that to implement mapUniqSet you have to update
-- both the keys and the values.
newtype UniqSet a = UniqSet {getUniqSet' :: UniqFM a} deriving Data
newtype UniqSet a = UniqSet {getUniqSet' :: UniqFM a}
deriving (Data, Semi.Semigroup, Monoid)
emptyUniqSet :: UniqSet a
emptyUniqSet = UniqSet emptyUFM
......@@ -186,11 +187,6 @@ unsafeUFMToUniqSet = UniqSet
instance Outputable a => Outputable (UniqSet a) where
ppr = pprUniqSet ppr
instance Data.Semigroup.Semigroup (UniqSet a) where
(<>) = mappend
instance Monoid (UniqSet a) where
mempty = UniqSet mempty
UniqSet s `mappend` UniqSet t = UniqSet (s `mappend` t)
pprUniqSet :: (a -> SDoc) -> UniqSet a -> SDoc
pprUniqSet f (UniqSet s) = pprUniqFM f s
......@@ -45,6 +45,9 @@ Executable ghc
C-Sources: hschooks.c
GHC-Options: -Wall
-Wnoncanonical-monad-instances
-Wnoncanonical-monoid-instances
if flag(ghci)
-- NB: this is never built by the bootstrapping GHC+libraries
Build-depends:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment