diff options
| author | Herbert Valerio Riedel <hvr@gnu.org> | 2017-09-09 13:47:08 +0200 |
|---|---|---|
| committer | Herbert Valerio Riedel <hvr@gnu.org> | 2017-09-09 14:27:27 +0200 |
| commit | dab0e515eadecaee3e9e9f5f8eee3159fa39bb27 (patch) | |
| tree | ba23795bfde3c92dd9567fc5d617ac21ad4d97d1 /compiler/utils/UniqSet.hs | |
| parent | 400ead81e80f66ad7b1260b11b2a92f25ccc3e5a (diff) | |
| download | haskell-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.hs | 10 |
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 |
