summaryrefslogtreecommitdiff
path: root/compiler/utils/UniqSet.hs
diff options
context:
space:
mode:
authorHerbert Valerio Riedel <hvr@gnu.org>2017-09-09 13:47:08 +0200
committerHerbert Valerio Riedel <hvr@gnu.org>2017-09-09 14:27:27 +0200
commitdab0e515eadecaee3e9e9f5f8eee3159fa39bb27 (patch)
treeba23795bfde3c92dd9567fc5d617ac21ad4d97d1 /compiler/utils/UniqSet.hs
parent400ead81e80f66ad7b1260b11b2a92f25ccc3e5a (diff)
downloadhaskell-dab0e515eadecaee3e9e9f5f8eee3159fa39bb27.tar.gz
Canonicalise Monoid instances in GHC
IOW, code compiles -Wnoncanonical-monoid-instances clean now
Diffstat (limited to 'compiler/utils/UniqSet.hs')
-rw-r--r--compiler/utils/UniqSet.hs10
1 files changed, 3 insertions, 7 deletions
diff --git a/compiler/utils/UniqSet.hs b/compiler/utils/UniqSet.hs
index fcac865ea8..d09b337d12 100644
--- a/compiler/utils/UniqSet.hs
+++ b/compiler/utils/UniqSet.hs
@@ -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