Browse Source

StreamFeatures Semigroup instance for ghc-8.4 compat

as suggested in https://prime.haskell.org/wiki/Libraries/Proposals/SemigroupMonoid#Writingcompatiblecode
fixes #114
master
Sergey Alirzaev 7 years ago
parent
commit
3058907bba
No known key found for this signature in database
GPG Key ID: 27ECE5E231D08747
  1. 24
      source/Network/Xmpp/Types.hs

24
source/Network/Xmpp/Types.hs

@ -95,6 +95,7 @@ import qualified Data.ByteString as BS
import Data.Char (isSpace) import Data.Char (isSpace)
import Data.Conduit import Data.Conduit
import Data.Default import Data.Default
import Data.Semigroup as Sem
import qualified Data.Set as Set import qualified Data.Set as Set
import Data.String (IsString, fromString) import Data.String (IsString, fromString)
import Data.Text (Text) import Data.Text (Text)
@ -735,16 +736,8 @@ data StreamFeatures = StreamFeatures
-- TODO: All feature elements instead? -- TODO: All feature elements instead?
} deriving (Eq, Show) } deriving (Eq, Show)
instance Monoid StreamFeatures where instance Sem.Semigroup StreamFeatures where
mempty = StreamFeatures sf1 <> sf2 =
{ streamFeaturesTls = Nothing
, streamFeaturesMechanisms = []
, streamFeaturesRosterVer = Nothing
, streamFeaturesPreApproval = False
, streamFeaturesSession = Nothing
, streamFeaturesOther = []
}
mappend sf1 sf2 =
StreamFeatures StreamFeatures
{ streamFeaturesTls = mplusOn streamFeaturesTls { streamFeaturesTls = mplusOn streamFeaturesTls
, streamFeaturesMechanisms = mplusOn streamFeaturesMechanisms , streamFeaturesMechanisms = mplusOn streamFeaturesMechanisms
@ -759,6 +752,17 @@ instance Monoid StreamFeatures where
where where
mplusOn f = f sf1 `mplus` f sf2 mplusOn f = f sf1 `mplus` f sf2
instance Monoid StreamFeatures where
mempty = StreamFeatures
{ streamFeaturesTls = Nothing
, streamFeaturesMechanisms = []
, streamFeaturesRosterVer = Nothing
, streamFeaturesPreApproval = False
, streamFeaturesSession = Nothing
, streamFeaturesOther = []
}
mappend = (<>)
-- | Signals the state of the stream connection. -- | Signals the state of the stream connection.
data ConnectionState data ConnectionState
= Closed -- ^ Stream has not been established yet = Closed -- ^ Stream has not been established yet

Loading…
Cancel
Save