diff --git a/src/Data/HashSet/Instances.hs b/src/Data/HashSet/Instances.hs index 5d9f48b40..ad8b90b1d 100644 --- a/src/Data/HashSet/Instances.hs +++ b/src/Data/HashSet/Instances.hs @@ -17,5 +17,5 @@ import Control.Lens import Data.Proxy -instance (ToSample a, Hashable a, Eq a) => ToSample (HashSet a) where +instance (ToSample a, Hashable a) => ToSample (HashSet a) where toSamples _ = over _2 HashSet.fromList <$> toSamples (Proxy @[a]) diff --git a/src/Data/Set/Instances.hs b/src/Data/Set/Instances.hs index 757f0d76b..816446262 100644 --- a/src/Data/Set/Instances.hs +++ b/src/Data/Set/Instances.hs @@ -8,10 +8,11 @@ module Data.Set.Instances ( ) where -import ClassyPrelude +--import ClassyPrelude -import qualified Data.Set as Set +--import qualified Data.Set as Set -instance (Ord a, Hashable a) => Hashable (Set a) where - hashWithSalt s xs = hashWithSalt s $ Set.toAscList xs +-- Duplicate instance declaration: Defined in ‘hashable-1.4.0.0:Data.Hashable.Class +--instance (Ord a, Hashable a) => Hashable (Set a) where +-- hashWithSalt s xs = hashWithSalt s $ Set.toAscList xs diff --git a/src/Data/Time/Clock/Instances.hs b/src/Data/Time/Clock/Instances.hs index d08b8e6c4..8234228fa 100644 --- a/src/Data/Time/Clock/Instances.hs +++ b/src/Data/Time/Clock/Instances.hs @@ -30,11 +30,13 @@ import qualified Language.Haskell.TH as TH import qualified Language.Haskell.TH.Syntax as TH -instance Hashable DiffTime where - hashWithSalt s = hashWithSalt s . toRational +-- Duplicate instance declaration: Defined in ‘time-compat-1.9.6.1:Data.Time.Orphans’ +--instance Hashable DiffTime where +-- hashWithSalt s = hashWithSalt s . toRational -instance Hashable NominalDiffTime where - hashWithSalt s = hashWithSalt s . toRational +-- Duplicate instance declaration: Defined in ‘time-compat-1.9.6.1:Data.Time.Orphans’ +--instance Hashable NominalDiffTime where +-- hashWithSalt s = hashWithSalt s . toRational instance PersistField NominalDiffTime where toPersistValue = toPersistValue . toRational @@ -45,7 +47,8 @@ instance PersistFieldSql NominalDiffTime where deriving instance Generic Day deriving instance Generic UTCTime -instance Hashable UTCTime +-- Duplicate instance declaration: Defined in ‘time-compat-1.9.6.1:Data.Time.Orphans’ +--instance Hashable UTCTime instance PathPiece UTCTime where toPathPiece = pack . iso8601Show diff --git a/src/Data/Universe/Instances/Reverse/Hashable.hs b/src/Data/Universe/Instances/Reverse/Hashable.hs index 71f1b381f..70b43c8f3 100644 --- a/src/Data/Universe/Instances/Reverse/Hashable.hs +++ b/src/Data/Universe/Instances/Reverse/Hashable.hs @@ -1,4 +1,4 @@ --- SPDX-FileCopyrightText: 2022 Gregor Kleen +-- SPDX-FileCopyrightText: 2024 Stephan Barth , 2022 Gregor Kleen -- -- SPDX-License-Identifier: AGPL-3.0-or-later @@ -12,6 +12,8 @@ import ClassyPrelude import Data.Universe +instance (Eq b, Finite a) => Eq (a -> b) where + (==) f g = [ f k | k <- universeF ] == [ g k | k <- universeF ] instance (Hashable a, Hashable b, Finite a) => Hashable (a -> b) where hashWithSalt s f = s `hashWithSalt` [ (k, f k) | k <- universeF ] diff --git a/src/Data/Universe/Instances/Reverse/JSON.hs b/src/Data/Universe/Instances/Reverse/JSON.hs index f61e2c673..871469655 100644 --- a/src/Data/Universe/Instances/Reverse/JSON.hs +++ b/src/Data/Universe/Instances/Reverse/JSON.hs @@ -22,10 +22,10 @@ import Data.Universe import Control.Monad.Fail -instance (Eq a, Hashable a, Finite a, ToJSON b, ToJSONKey a) => ToJSON (a -> b) where +instance (Hashable a, Finite a, ToJSON b, ToJSONKey a) => ToJSON (a -> b) where toJSON f = toJSON $ HashMap.fromList [(k, f k) | k <- universeF] -instance (Eq a, Hashable a, Finite a, FromJSON b, FromJSONKey a) => FromJSON (a -> b) where +instance (Hashable a, Finite a, FromJSON b, FromJSONKey a) => FromJSON (a -> b) where parseJSON val = asObject <|> asConst where asObject = do diff --git a/src/Foundation/Authorization.hs b/src/Foundation/Authorization.hs index 0243b0609..665cc5978 100644 --- a/src/Foundation/Authorization.hs +++ b/src/Foundation/Authorization.hs @@ -255,10 +255,10 @@ data AuthContext = AuthContext deriving stock instance Eq (AuthId UniWorX) => Eq AuthContext deriving stock instance Ord (AuthId UniWorX) => Ord AuthContext -deriving stock instance (Read (AuthId UniWorX), Eq (AuthId UniWorX), Hashable (AuthId UniWorX)) => Read AuthContext -deriving stock instance (Show (AuthId UniWorX), Eq (AuthId UniWorX), Hashable (AuthId UniWorX)) => Show AuthContext +deriving stock instance (Read (AuthId UniWorX), Hashable (AuthId UniWorX)) => Read AuthContext +deriving stock instance (Show (AuthId UniWorX), Hashable (AuthId UniWorX)) => Show AuthContext deriving anyclass instance Hashable (AuthId UniWorX) => Hashable AuthContext -deriving anyclass instance (Binary (AuthId UniWorX), Eq (AuthId UniWorX), Hashable (AuthId UniWorX)) => Binary AuthContext +deriving anyclass instance (Binary (AuthId UniWorX), Hashable (AuthId UniWorX)) => Binary AuthContext getAuthContext :: forall m. ( MonadHandler m, HandlerSite m ~ UniWorX diff --git a/src/Foundation/Navigation.hs b/src/Foundation/Navigation.hs index ce7d466f4..93e589de6 100644 --- a/src/Foundation/Navigation.hs +++ b/src/Foundation/Navigation.hs @@ -504,10 +504,10 @@ data NavigationCacheKey deriving stock instance Eq (AuthId UniWorX) => Eq NavigationCacheKey deriving stock instance Ord (AuthId UniWorX) => Ord NavigationCacheKey -deriving stock instance (Read (AuthId UniWorX), Eq (AuthId UniWorX), Hashable (AuthId UniWorX)) => Read NavigationCacheKey -deriving stock instance (Show (AuthId UniWorX), Eq (AuthId UniWorX), Hashable (AuthId UniWorX)) => Show NavigationCacheKey +deriving stock instance (Read (AuthId UniWorX), Hashable (AuthId UniWorX)) => Read NavigationCacheKey +deriving stock instance (Show (AuthId UniWorX), Hashable (AuthId UniWorX)) => Show NavigationCacheKey deriving anyclass instance Hashable (AuthId UniWorX) => Hashable NavigationCacheKey -deriving anyclass instance (Binary (AuthId UniWorX), Eq (AuthId UniWorX), Hashable (AuthId UniWorX)) => Binary NavigationCacheKey +deriving anyclass instance (Binary (AuthId UniWorX), Hashable (AuthId UniWorX)) => Binary NavigationCacheKey navAccess :: (MonadHandler m, HandlerSite m ~ UniWorX, MonadCatch m, WithRunDB SqlReadBackend (HandlerFor UniWorX) m, BearerAuthSite UniWorX) => Nav -> MaybeT m Nav diff --git a/src/Model/Tokens/Bearer.hs b/src/Model/Tokens/Bearer.hs index c2176dc7f..9ba12c896 100644 --- a/src/Model/Tokens/Bearer.hs +++ b/src/Model/Tokens/Bearer.hs @@ -86,10 +86,10 @@ data BearerToken site = BearerToken deriving stock instance (Eq (AuthId site), Eq (Route site)) => Eq (BearerToken site) deriving stock instance (Ord (AuthId site), Ord (Route site)) => Ord (BearerToken site) -deriving stock instance (Read (AuthId site), Eq (Route site), Hashable (Route site), Read (Route site), Hashable (AuthId site), Eq (AuthId site)) => Read (BearerToken site) +deriving stock instance (Read (AuthId site), Hashable (Route site), Read (Route site), Hashable (AuthId site)) => Read (BearerToken site) deriving stock instance (Show (AuthId site), Show (Route site), Hashable (AuthId site)) => Show (BearerToken site) deriving anyclass instance (Hashable (AuthId site), Hashable (Route site)) => Hashable (BearerToken site) -deriving anyclass instance (Binary (AuthId site), Binary (Route site), Hashable (Route site), Eq (Route site), Hashable (AuthId site), Eq (AuthId site)) => Binary (BearerToken site) +deriving anyclass instance (Binary (AuthId site), Binary (Route site), Hashable (Route site), Hashable (AuthId site)) => Binary (BearerToken site) makeLenses_ ''BearerToken instance HasTokenIdentifier (BearerToken site) TokenId where diff --git a/src/Utils.hs b/src/Utils.hs index 2093da8b2..2019700fd 100644 --- a/src/Utils.hs +++ b/src/Utils.hs @@ -1860,11 +1860,11 @@ instance TraversableWithIndex k (MergeHashMap k) where itraverse = _MergeHashMap .> itraverse instance FoldableWithIndex k (MergeHashMap k) -instance (Eq k, Hashable k, Semigroup v) => Semigroup (MergeHashMap k v) where +instance (Hashable k, Semigroup v) => Semigroup (MergeHashMap k v) where (MergeHashMap a) <> (MergeHashMap b) = MergeHashMap $ HashMap.unionWith (<>) a b -instance (Eq k, Hashable k, Semigroup v) => Monoid (MergeHashMap k v) where +instance (Hashable k, Semigroup v) => Monoid (MergeHashMap k v) where mempty = MergeHashMap HashMap.empty -instance (Eq k, Hashable k, FromJSON v, FromJSONKey k, Semigroup v) => FromJSON (MergeHashMap k v) where +instance (Hashable k, FromJSON v, FromJSONKey k, Semigroup v) => FromJSON (MergeHashMap k v) where parseJSON = case Aeson.fromJSONKey of Aeson.FromJSONKeyCoerce -> Aeson.withObject "HashMap ~Text" $ coerce @(Aeson.Parser (HashMap k v)) @(Aeson.Parser (MergeHashMap k v)) . fmap HashMap.fromList . traverse (\(k, v) -> (coerce @Text @k k, ) <$> parseJSON v Aeson. Aeson.Key k) . HashMap.toList