diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2015-01-06 13:46:35 +0000 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2015-01-06 14:25:01 +0000 |
commit | c409b6f30373535b6eed92e55d4695688d32be9e (patch) | |
tree | 66902f9691a157684430474cb6ab1228a5c9f1d5 | |
parent | 39337a6d97c853a88fa61d6b12a04eb8c2e5984f (diff) | |
download | haskell-c409b6f30373535b6eed92e55d4695688d32be9e.tar.gz |
Remove redundant constraints from libraries, discovered by -fwarn-redundant-constraints
This patch affects libraries, and requires a submodule update.
Some other libraries, maintained by others, have redundant constraints,
namely:
containers
haskeline
transformers
binary
I have suppressed the redundant-constraint warnings by settings in
validate-settings.mk
(in this commit)
m--------- | libraries/array | 0 | ||||
-rw-r--r-- | libraries/base/Data/Data.hs | 8 | ||||
-rw-r--r-- | libraries/base/Data/Foldable.hs | 4 | ||||
-rw-r--r-- | libraries/base/GHC/Arr.hs | 46 | ||||
-rw-r--r-- | libraries/base/GHC/Event/Array.hs | 4 | ||||
-rw-r--r-- | libraries/base/GHC/IOArray.hs | 4 | ||||
-rw-r--r-- | libraries/base/GHC/Real.hs | 6 | ||||
-rw-r--r-- | libraries/base/Text/Printf.hs | 2 | ||||
m--------- | libraries/deepseq | 0 | ||||
m--------- | libraries/hoopl | 0 | ||||
m--------- | libraries/parallel | 0 | ||||
-rw-r--r-- | mk/validate-settings.mk | 3 |
12 files changed, 40 insertions, 37 deletions
diff --git a/libraries/array b/libraries/array -Subproject 4baaf0b6d1e7498f529e41eaa3a065cfa84b078 +Subproject e69fab76b5b15d7e7f413edb936faab30d05b8a diff --git a/libraries/base/Data/Data.hs b/libraries/base/Data/Data.hs index 8f1e5f4735..dce610b1d7 100644 --- a/libraries/base/Data/Data.hs +++ b/libraries/base/Data/Data.hs @@ -1064,7 +1064,7 @@ ratioConstr = mkConstr ratioDataType ":%" [] Infix ratioDataType :: DataType ratioDataType = mkDataType "GHC.Real.Ratio" [ratioConstr] -instance (Data a, Integral a) => Data (Ratio a) where +instance Data a => Data (Ratio a) where gfoldl k z (a :% b) = z (:%) `k` a `k` b toConstr _ = ratioConstr gunfold k z c | constrIndex c == 1 = k (k (z (:%))) @@ -1303,7 +1303,7 @@ instance (Data a, Data b, Data c, Data d, Data e, Data f, Data g) ------------------------------------------------------------------------------ -instance (Data a, Typeable a) => Data (Ptr a) where +instance Data a => Data (Ptr a) where toConstr _ = error "Data.Data.toConstr(Ptr)" gunfold _ _ = error "Data.Data.gunfold(Ptr)" dataTypeOf _ = mkNoRepType "GHC.Ptr.Ptr" @@ -1311,7 +1311,7 @@ instance (Data a, Typeable a) => Data (Ptr a) where ------------------------------------------------------------------------------ -instance (Data a, Typeable a) => Data (ForeignPtr a) where +instance Data a => Data (ForeignPtr a) where toConstr _ = error "Data.Data.toConstr(ForeignPtr)" gunfold _ _ = error "Data.Data.gunfold(ForeignPtr)" dataTypeOf _ = mkNoRepType "GHC.ForeignPtr.ForeignPtr" @@ -1320,7 +1320,7 @@ instance (Data a, Typeable a) => Data (ForeignPtr a) where ------------------------------------------------------------------------------ -- The Data instance for Array preserves data abstraction at the cost of -- inefficiency. We omit reflection services for the sake of data abstraction. -instance (Typeable a, Data a, Data b, Ix a) => Data (Array a b) +instance (Data a, Data b, Ix a) => Data (Array a b) where gfoldl f z a = z (listArray (bounds a)) `f` (elems a) toConstr _ = error "Data.Data.toConstr(Array)" diff --git a/libraries/base/Data/Foldable.hs b/libraries/base/Data/Foldable.hs index ed32879d28..a745f66092 100644 --- a/libraries/base/Data/Foldable.hs +++ b/libraries/base/Data/Foldable.hs @@ -56,7 +56,7 @@ import Data.Monoid import Data.Ord import Data.Proxy -import GHC.Arr ( Array(..), Ix(..), elems, numElements, +import GHC.Arr ( Array(..), elems, numElements, foldlElems, foldrElems, foldlElems', foldrElems', foldl1Elems, foldr1Elems) @@ -254,7 +254,7 @@ instance Foldable ((,) a) where foldr f z (_, y) = f y z -instance Ix i => Foldable (Array i) where +instance Foldable (Array i) where foldr = foldrElems foldl = foldlElems foldl' = foldlElems' diff --git a/libraries/base/GHC/Arr.hs b/libraries/base/GHC/Arr.hs index cefef97f0f..8b7a2afae0 100644 --- a/libraries/base/GHC/Arr.hs +++ b/libraries/base/GHC/Arr.hs @@ -450,7 +450,7 @@ unsafeArray :: Ix i => (i,i) -> [(Int, e)] -> Array i e unsafeArray b ies = unsafeArray' b (rangeSize b) ies {-# INLINE unsafeArray' #-} -unsafeArray' :: Ix i => (i,i) -> Int -> [(Int, e)] -> Array i e +unsafeArray' :: (i,i) -> Int -> [(Int, e)] -> Array i e unsafeArray' (l,u) n@(I# n#) ies = runST (ST $ \s1# -> case newArray# n# arrEleBottom s1# of (# s2#, marr# #) -> @@ -465,7 +465,7 @@ fill marr# (I# i#, e) next s2# -> next s2# {-# INLINE done #-} -done :: Ix i => i -> i -> Int -> MutableArray# s e -> STRep s (Array i e) +done :: i -> i -> Int -> MutableArray# s e -> STRep s (Array i e) -- See NB on 'fill' -- Make sure it is strict in 'n' done l u n@(I# _) marr# @@ -535,18 +535,18 @@ badSafeIndex i' n = error ("Error in array index; " ++ show i' ++ " not in range [0.." ++ show n ++ ")") {-# INLINE unsafeAt #-} -unsafeAt :: Ix i => Array i e -> Int -> e +unsafeAt :: Array i e -> Int -> e unsafeAt (Array _ _ _ arr#) (I# i#) = case indexArray# arr# i# of (# e #) -> e -- | The bounds with which an array was constructed. {-# INLINE bounds #-} -bounds :: Ix i => Array i e -> (i,i) +bounds :: Array i e -> (i,i) bounds (Array l u _ _) = (l,u) -- | The number of elements in the array. {-# INLINE numElements #-} -numElements :: Ix i => Array i e -> Int +numElements :: Array i e -> Int numElements (Array _ _ n _) = n -- | The list of indices of an array in ascending order. @@ -556,13 +556,13 @@ indices (Array l u _ _) = range (l,u) -- | The list of elements of an array in index order. {-# INLINE elems #-} -elems :: Ix i => Array i e -> [e] +elems :: Array i e -> [e] elems arr@(Array _ _ n _) = [unsafeAt arr i | i <- [0 .. n - 1]] -- | A right fold over the elements {-# INLINABLE foldrElems #-} -foldrElems :: Ix i => (a -> b -> b) -> b -> Array i a -> b +foldrElems :: (a -> b -> b) -> b -> Array i a -> b foldrElems f b0 = \ arr@(Array _ _ n _) -> let go i | i == n = b0 @@ -571,7 +571,7 @@ foldrElems f b0 = \ arr@(Array _ _ n _) -> -- | A left fold over the elements {-# INLINABLE foldlElems #-} -foldlElems :: Ix i => (b -> a -> b) -> b -> Array i a -> b +foldlElems :: (b -> a -> b) -> b -> Array i a -> b foldlElems f b0 = \ arr@(Array _ _ n _) -> let go i | i == (-1) = b0 @@ -580,7 +580,7 @@ foldlElems f b0 = \ arr@(Array _ _ n _) -> -- | A strict right fold over the elements {-# INLINABLE foldrElems' #-} -foldrElems' :: Ix i => (a -> b -> b) -> b -> Array i a -> b +foldrElems' :: (a -> b -> b) -> b -> Array i a -> b foldrElems' f b0 = \ arr@(Array _ _ n _) -> let go i a | i == (-1) = a @@ -589,7 +589,7 @@ foldrElems' f b0 = \ arr@(Array _ _ n _) -> -- | A strict left fold over the elements {-# INLINABLE foldlElems' #-} -foldlElems' :: Ix i => (b -> a -> b) -> b -> Array i a -> b +foldlElems' :: (b -> a -> b) -> b -> Array i a -> b foldlElems' f b0 = \ arr@(Array _ _ n _) -> let go i a | i == n = a @@ -598,7 +598,7 @@ foldlElems' f b0 = \ arr@(Array _ _ n _) -> -- | A left fold over the elements with no starting value {-# INLINABLE foldl1Elems #-} -foldl1Elems :: Ix i => (a -> a -> a) -> Array i a -> a +foldl1Elems :: (a -> a -> a) -> Array i a -> a foldl1Elems f = \ arr@(Array _ _ n _) -> let go i | i == 0 = unsafeAt arr 0 @@ -608,7 +608,7 @@ foldl1Elems f = \ arr@(Array _ _ n _) -> -- | A right fold over the elements with no starting value {-# INLINABLE foldr1Elems #-} -foldr1Elems :: Ix i => (a -> a -> a) -> Array i a -> a +foldr1Elems :: (a -> a -> a) -> Array i a -> a foldr1Elems f = \ arr@(Array _ _ n _) -> let go i | i == n-1 = unsafeAt arr i @@ -653,7 +653,7 @@ unsafeAccumArray :: Ix i => (e -> a -> e) -> e -> (i,i) -> [(Int, a)] -> Array i unsafeAccumArray f initial b ies = unsafeAccumArray' f initial b (rangeSize b) ies {-# INLINE unsafeAccumArray' #-} -unsafeAccumArray' :: Ix i => (e -> a -> e) -> e -> (i,i) -> Int -> [(Int, a)] -> Array i e +unsafeAccumArray' :: (e -> a -> e) -> e -> (i,i) -> Int -> [(Int, a)] -> Array i e unsafeAccumArray' f initial (l,u) n@(I# n#) ies = runST (ST $ \s1# -> case newArray# n# initial s1# of { (# s2#, marr# #) -> foldr (adjust f marr#) (done l u n marr#) ies s2# }) @@ -684,7 +684,7 @@ arr@(Array l u n _) // ies = unsafeReplace arr [(safeIndex (l,u) n i, e) | (i, e) <- ies] {-# INLINE unsafeReplace #-} -unsafeReplace :: Ix i => Array i e -> [(Int, e)] -> Array i e +unsafeReplace :: Array i e -> [(Int, e)] -> Array i e unsafeReplace arr ies = runST (do STArray l u n marr# <- thawSTArray arr ST (foldr (fill marr#) (done l u n marr#) ies)) @@ -701,13 +701,13 @@ accum f arr@(Array l u n _) ies = unsafeAccum f arr [(safeIndex (l,u) n i, e) | (i, e) <- ies] {-# INLINE unsafeAccum #-} -unsafeAccum :: Ix i => (e -> a -> e) -> Array i e -> [(Int, a)] -> Array i e +unsafeAccum :: (e -> a -> e) -> Array i e -> [(Int, a)] -> Array i e unsafeAccum f arr ies = runST (do STArray l u n marr# <- thawSTArray arr ST (foldr (adjust f marr#) (done l u n marr#) ies)) {-# INLINE [1] amap #-} -amap :: Ix i => (a -> b) -> Array i a -> Array i b +amap :: (a -> b) -> Array i a -> Array i b amap f arr@(Array l u n@(I# n#) _) = runST (ST $ \s1# -> case newArray# n# arrEleBottom s1# of (# s2#, marr# #) -> @@ -786,7 +786,7 @@ cmpIntArray arr1@(Array l1 u1 n1 _) arr2@(Array l2 u2 n2 _) = ---------------------------------------------------------------------- -- Array instances -instance Ix i => Functor (Array i) where +instance Functor (Array i) where fmap = amap instance (Ix i, Eq e) => Eq (Array i e) where @@ -845,7 +845,7 @@ readSTArray marr@(STArray l u n _) i = unsafeReadSTArray marr (safeIndex (l,u) n i) {-# INLINE unsafeReadSTArray #-} -unsafeReadSTArray :: Ix i => STArray s i e -> Int -> ST s e +unsafeReadSTArray :: STArray s i e -> Int -> ST s e unsafeReadSTArray (STArray _ _ _ marr#) (I# i#) = ST $ \s1# -> readArray# marr# i# s1# @@ -855,7 +855,7 @@ writeSTArray marr@(STArray l u n _) i e = unsafeWriteSTArray marr (safeIndex (l,u) n i) e {-# INLINE unsafeWriteSTArray #-} -unsafeWriteSTArray :: Ix i => STArray s i e -> Int -> e -> ST s () +unsafeWriteSTArray :: STArray s i e -> Int -> e -> ST s () unsafeWriteSTArray (STArray _ _ _ marr#) (I# i#) e = ST $ \s1# -> case writeArray# marr# i# e s1# of s2# -> (# s2#, () #) @@ -863,7 +863,7 @@ unsafeWriteSTArray (STArray _ _ _ marr#) (I# i#) e = ST $ \s1# -> ---------------------------------------------------------------------- -- Moving between mutable and immutable -freezeSTArray :: Ix i => STArray s i e -> ST s (Array i e) +freezeSTArray :: STArray s i e -> ST s (Array i e) freezeSTArray (STArray l u n@(I# n#) marr#) = ST $ \s1# -> case newArray# n# arrEleBottom s1# of { (# s2#, marr'# #) -> let copy i# s3# | isTrue# (i# ==# n#) = s3# @@ -876,12 +876,12 @@ freezeSTArray (STArray l u n@(I# n#) marr#) = ST $ \s1# -> (# s4#, Array l u n arr# #) }}} {-# INLINE unsafeFreezeSTArray #-} -unsafeFreezeSTArray :: Ix i => STArray s i e -> ST s (Array i e) +unsafeFreezeSTArray :: STArray s i e -> ST s (Array i e) unsafeFreezeSTArray (STArray l u n marr#) = ST $ \s1# -> case unsafeFreezeArray# marr# s1# of { (# s2#, arr# #) -> (# s2#, Array l u n arr# #) } -thawSTArray :: Ix i => Array i e -> ST s (STArray s i e) +thawSTArray :: Array i e -> ST s (STArray s i e) thawSTArray (Array l u n@(I# n#) arr#) = ST $ \s1# -> case newArray# n# arrEleBottom s1# of { (# s2#, marr# #) -> let copy i# s3# | isTrue# (i# ==# n#) = s3# @@ -893,7 +893,7 @@ thawSTArray (Array l u n@(I# n#) arr#) = ST $ \s1# -> (# s3#, STArray l u n marr# #) }} {-# INLINE unsafeThawSTArray #-} -unsafeThawSTArray :: Ix i => Array i e -> ST s (STArray s i e) +unsafeThawSTArray :: Array i e -> ST s (STArray s i e) unsafeThawSTArray (Array l u n arr#) = ST $ \s1# -> case unsafeThawArray# arr# s1# of { (# s2#, marr# #) -> (# s2#, STArray l u n marr# #) } diff --git a/libraries/base/GHC/Event/Array.hs b/libraries/base/GHC/Event/Array.hs index e0e089f8d1..61cc773007 100644 --- a/libraries/base/GHC/Event/Array.hs +++ b/libraries/base/GHC/Event/Array.hs @@ -132,7 +132,7 @@ unsafeWrite' (AC es _ cap) ix a = do withForeignPtr es $ \p -> pokeElemOff p ix a -unsafeLoad :: Storable a => Array a -> (Ptr a -> Int -> IO Int) -> IO Int +unsafeLoad :: Array a -> (Ptr a -> Int -> IO Int) -> IO Int unsafeLoad (Array ref) load = do AC es _ cap <- readIORef ref len' <- withForeignPtr es $ \p -> load p cap @@ -170,7 +170,7 @@ snoc (Array ref) e = do unsafeWrite' ac' len e writeIORef ref (AC es len' cap) -clear :: Storable a => Array a -> IO () +clear :: Array a -> IO () clear (Array ref) = do atomicModifyIORef' ref $ \(AC es _ cap) -> (AC es 0 cap, ()) diff --git a/libraries/base/GHC/IOArray.hs b/libraries/base/GHC/IOArray.hs index 33b1804dbb..6c925d3b2f 100644 --- a/libraries/base/GHC/IOArray.hs +++ b/libraries/base/GHC/IOArray.hs @@ -54,12 +54,12 @@ newIOArray :: Ix i => (i,i) -> e -> IO (IOArray i e) newIOArray lu initial = stToIO $ do {marr <- newSTArray lu initial; return (IOArray marr)} -- | Read a value from an 'IOArray' -unsafeReadIOArray :: Ix i => IOArray i e -> Int -> IO e +unsafeReadIOArray :: IOArray i e -> Int -> IO e {-# INLINE unsafeReadIOArray #-} unsafeReadIOArray (IOArray marr) i = stToIO (unsafeReadSTArray marr i) -- | Write a new value into an 'IOArray' -unsafeWriteIOArray :: Ix i => IOArray i e -> Int -> e -> IO () +unsafeWriteIOArray :: IOArray i e -> Int -> e -> IO () {-# INLINE unsafeWriteIOArray #-} unsafeWriteIOArray (IOArray marr) i e = stToIO (unsafeWriteSTArray marr i e) diff --git a/libraries/base/GHC/Real.hs b/libraries/base/GHC/Real.hs index 656a22de74..1a18e6a3ac 100644 --- a/libraries/base/GHC/Real.hs +++ b/libraries/base/GHC/Real.hs @@ -103,12 +103,12 @@ notANumber = 0 :% 0 -- | Extract the numerator of the ratio in reduced form: -- the numerator and denominator have no common factor and the denominator -- is positive. -numerator :: (Integral a) => Ratio a -> a +numerator :: Ratio a -> a -- | Extract the denominator of the ratio in reduced form: -- the numerator and denominator have no common factor and the denominator -- is positive. -denominator :: (Integral a) => Ratio a -> a +denominator :: Ratio a -> a -- | 'reduce' is a subsidiary function used only in this module. @@ -410,7 +410,7 @@ instance (Integral a) => RealFrac (Ratio a) where properFraction (x:%y) = (fromInteger (toInteger q), r:%y) where (q,r) = quotRem x y -instance (Integral a, Show a) => Show (Ratio a) where +instance (Show a) => Show (Ratio a) where {-# SPECIALIZE instance Show Rational #-} showsPrec p (x:%y) = showParen (p > ratioPrec) $ showsPrec ratioPrec1 x . diff --git a/libraries/base/Text/Printf.hs b/libraries/base/Text/Printf.hs index cc8c462688..2ccbc11c2f 100644 --- a/libraries/base/Text/Printf.hs +++ b/libraries/base/Text/Printf.hs @@ -461,7 +461,7 @@ intModifierMap = [ ("ll", toInteger (minBound :: Int64)), ("L", toInteger (minBound :: Int64)) ] -parseIntFormat :: Integral a => a -> String -> FormatParse +parseIntFormat :: a -> String -> FormatParse parseIntFormat _ s = case foldr matchPrefix Nothing intModifierMap of Just m -> m diff --git a/libraries/deepseq b/libraries/deepseq -Subproject a79bee5f5da25353b88759cf5ed8d0df2b59946 +Subproject de1bc894de1ffdd34e6eb8be4fb9e057198060c diff --git a/libraries/hoopl b/libraries/hoopl -Subproject d39ddd928e0d691ee571768a613fd10f6f951a4 +Subproject b38e92f67cabfa0d0ed12ac93c2d431f2391de7 diff --git a/libraries/parallel b/libraries/parallel -Subproject 5b86f00553688195ea3496d9b7052ec1a9a9c2f +Subproject e4e4228ba94178cf31b97fe81b94bff3de6fce0 diff --git a/mk/validate-settings.mk b/mk/validate-settings.mk index 46d269f03b..44222d0f36 100644 --- a/mk/validate-settings.mk +++ b/mk/validate-settings.mk @@ -104,6 +104,7 @@ utils/haddock_dist_EXTRA_HC_OPTS += -fno-warn-deprecations # containers uses bitSize at the moment libraries/containers_dist-install_EXTRA_HC_OPTS += -fno-warn-deprecations +libraries/containers_dist-install_EXTRA_HC_OPTS += -fno-warn-redundant-constraints # On Windows, there are also some unused import warnings ifeq "$(HostOS_CPP)" "mingw32" @@ -113,6 +114,7 @@ endif # haskeline has warnings about deprecated use of block/unblock libraries/haskeline_dist-install_EXTRA_HC_OPTS += -fno-warn-deprecations libraries/haskeline_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports +libraries/haskeline_dist-install_EXTRA_HC_OPTS += -fno-warn-redundant-constraints # binary upstream has some warnings, so don't use -Werror for it libraries/binary_dist-boot_EXTRA_HC_OPTS += -Wwarn @@ -143,6 +145,7 @@ libraries/dph/dph-lifted-common-install_EXTRA_HC_OPTS += -Wwarn # transformers has unused function parameters warnings libraries/transformers_dist-boot_EXTRA_HC_OPTS += -fno-warn-unused-matches -fno-warn-unused-imports libraries/transformers_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-matches -fno-warn-unused-imports +libraries/transformers_dist-install_EXTRA_HC_OPTS += -fno-warn-redundant-constraints # Turn of trustworthy-safe warning libraries/base_dist-install_EXTRA_HC_OPTS += -fno-warn-trustworthy-safe |