diff --git a/.stylish-haskell.yaml b/.stylish-haskell.yaml index 036a8905..887cd8da 100644 --- a/.stylish-haskell.yaml +++ b/.stylish-haskell.yaml @@ -191,6 +191,25 @@ steps: # Default: false space_surround: false + # Post qualify option moves any qualifies found in import declarations + # to the end of the declaration. This also adjust padding for any + # unqualified import declarations. + # + # - true: Qualified as is moved to the end of the + # declaration. + # + # > import Data.Bar + # > import Data.Foo qualified as F + # + # - false: Qualified remains in the default location and unqualified + # imports are padded to align with qualified imports. + # + # > import Data.Bar + # > import qualified Data.Foo as F + # + # Default: false + post_qualify: true + # Language pragmas - language_pragmas: # We can generate different styles of language pragma lists. diff --git a/typed-protocols-cborg/src/Network/TypedProtocol/Codec/CBOR.hs b/typed-protocols-cborg/src/Network/TypedProtocol/Codec/CBOR.hs index 990960e2..a0ff3a21 100644 --- a/typed-protocols-cborg/src/Network/TypedProtocol/Codec/CBOR.hs +++ b/typed-protocols-cborg/src/Network/TypedProtocol/Codec/CBOR.hs @@ -1,11 +1,3 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE MonoLocalBinds #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.Codec.CBOR ( module Network.TypedProtocol.Codec , mkCodecCborLazyBS @@ -16,21 +8,21 @@ module Network.TypedProtocol.Codec.CBOR , CBOR.DeserialiseFailure (..) ) where -import Control.Monad.Class.MonadST (MonadST (..)) -import Control.Monad.ST hiding (stToIO) - -import qualified Codec.CBOR.Decoding as CBOR (Decoder) -import qualified Codec.CBOR.Encoding as CBOR (Encoding) -import qualified Codec.CBOR.Read as CBOR -import qualified Codec.CBOR.Write as CBOR -import qualified Data.ByteString as BS -import qualified Data.ByteString.Builder as BS -import qualified Data.ByteString.Builder.Extra as BS -import qualified Data.ByteString.Lazy as LBS -import qualified Data.ByteString.Lazy.Internal as LBS (smallChunkSize) - -import Network.TypedProtocol.Codec -import Network.TypedProtocol.Core +import Control.Monad.Class.MonadST (MonadST (..)) +import Control.Monad.ST hiding (stToIO) + +import Codec.CBOR.Decoding qualified as CBOR (Decoder) +import Codec.CBOR.Encoding qualified as CBOR (Encoding) +import Codec.CBOR.Read qualified as CBOR +import Codec.CBOR.Write qualified as CBOR +import Data.ByteString qualified as BS +import Data.ByteString.Builder qualified as BS +import Data.ByteString.Builder.Extra qualified as BS +import Data.ByteString.Lazy qualified as LBS +import Data.ByteString.Lazy.Internal qualified as LBS (smallChunkSize) + +import Network.TypedProtocol.Codec +import Network.TypedProtocol.Core -- | Construct a 'Codec' for a CBOR based serialisation format, using strict diff --git a/typed-protocols-cborg/typed-protocols-cborg.cabal b/typed-protocols-cborg/typed-protocols-cborg.cabal index 64ea2698..01e70df9 100644 --- a/typed-protocols-cborg/typed-protocols-cborg.cabal +++ b/typed-protocols-cborg/typed-protocols-cborg.cabal @@ -23,11 +23,11 @@ library cborg >=0.2.1 && <0.3, singletons, - io-classes:io-classes ^>=1.7, + io-classes ^>=1.7, typed-protocols ^>=0.4 - hs-source-dirs: src - default-language: Haskell2010 + default-language: GHC2021 + default-extensions: LambdaCase ghc-options: -Wall -Wno-unticked-promoted-constructors -Wcompat diff --git a/typed-protocols-examples/src/Network/TypedProtocol/Channel.hs b/typed-protocols-examples/src/Network/TypedProtocol/Channel.hs index 3333928a..0013c95f 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/Channel.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/Channel.hs @@ -1,9 +1,4 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} +{-# LANGUAGE CPP #-} module Network.TypedProtocol.Channel ( Channel (..) @@ -24,15 +19,15 @@ module Network.TypedProtocol.Channel , loggingChannel ) where -import Control.Concurrent.Class.MonadSTM -import Control.Monad ((>=>)) -import Control.Monad.Class.MonadSay -import Control.Monad.Class.MonadTimer.SI -import qualified Data.ByteString as BS -import qualified Data.ByteString.Lazy as LBS -import Data.ByteString.Lazy.Internal (smallChunkSize) -import Data.Proxy -import Numeric.Natural +import Control.Concurrent.Class.MonadSTM +import Control.Monad ((>=>)) +import Control.Monad.Class.MonadSay +import Control.Monad.Class.MonadTimer.SI +import Data.ByteString qualified as BS +import Data.ByteString.Lazy qualified as LBS +import Data.ByteString.Lazy.Internal (smallChunkSize) +import Data.Proxy +import Numeric.Natural #if !defined(mingw32_HOST_OS) import Network.Socket (Socket) diff --git a/typed-protocols-examples/src/Network/TypedProtocol/Driver/Simple.hs b/typed-protocols-examples/src/Network/TypedProtocol/Driver/Simple.hs index 04a4dcfe..93e18233 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/Driver/Simple.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/Driver/Simple.hs @@ -1,11 +1,3 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} -- @UndecidableInstances@ extensions is required for defining @Show@ instance -- of @'TraceSendRecv'@. @@ -32,15 +24,15 @@ module Network.TypedProtocol.Driver.Simple , runDecoderWithChannel ) where -import Network.TypedProtocol.Channel -import Network.TypedProtocol.Codec -import Network.TypedProtocol.Core -import Network.TypedProtocol.Driver -import Network.TypedProtocol.Peer +import Network.TypedProtocol.Channel +import Network.TypedProtocol.Codec +import Network.TypedProtocol.Core +import Network.TypedProtocol.Driver +import Network.TypedProtocol.Peer -import Control.Monad.Class.MonadAsync -import Control.Monad.Class.MonadThrow -import Control.Tracer (Tracer (..), contramap, traceWith) +import Control.Monad.Class.MonadAsync +import Control.Monad.Class.MonadThrow +import Control.Tracer (Tracer (..), contramap, traceWith) -- $intro diff --git a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Client.hs b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Client.hs index b6398428..2a68b47d 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Client.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Client.hs @@ -1,9 +1,3 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeOperators #-} - module Network.TypedProtocol.PingPong.Client ( -- * Normal client PingPongClient (..) @@ -14,9 +8,9 @@ module Network.TypedProtocol.PingPong.Client , pingPongClientPeerPipelined ) where -import Network.TypedProtocol.Core -import Network.TypedProtocol.Peer.Client -import Network.TypedProtocol.PingPong.Type +import Network.TypedProtocol.Core +import Network.TypedProtocol.Peer.Client +import Network.TypedProtocol.PingPong.Type -- | A ping-pong client, on top of some effect 'm'. -- diff --git a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Codec.hs b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Codec.hs index f825dae7..405addca 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Codec.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Codec.hs @@ -1,15 +1,8 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.PingPong.Codec where -import Network.TypedProtocol.Codec -import Network.TypedProtocol.Core -import Network.TypedProtocol.PingPong.Type +import Network.TypedProtocol.Codec +import Network.TypedProtocol.Core +import Network.TypedProtocol.PingPong.Type codecPingPong diff --git a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Codec/CBOR.hs b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Codec/CBOR.hs index 0d674a3b..6dd0499b 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Codec/CBOR.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Codec/CBOR.hs @@ -1,24 +1,17 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.PingPong.Codec.CBOR where -import Control.Monad.Class.MonadST +import Control.Monad.Class.MonadST -import Data.ByteString.Lazy (ByteString) +import Data.ByteString.Lazy (ByteString) -import qualified Codec.CBOR.Decoding as CBOR (Decoder, decodeWord) -import qualified Codec.CBOR.Encoding as CBOR (Encoding, encodeWord) -import qualified Codec.CBOR.Read as CBOR +import Codec.CBOR.Decoding qualified as CBOR (Decoder, decodeWord) +import Codec.CBOR.Encoding qualified as CBOR (Encoding, encodeWord) +import Codec.CBOR.Read qualified as CBOR -import Network.TypedProtocol.Codec -import Network.TypedProtocol.Codec.CBOR -import Network.TypedProtocol.Core -import Network.TypedProtocol.PingPong.Type +import Network.TypedProtocol.Codec +import Network.TypedProtocol.Codec.CBOR +import Network.TypedProtocol.Core +import Network.TypedProtocol.PingPong.Type codecPingPong :: forall m. diff --git a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Examples.hs b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Examples.hs index efcc6ea8..2aa2bf12 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Examples.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Examples.hs @@ -1,16 +1,9 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeOperators #-} - module Network.TypedProtocol.PingPong.Examples where -import Network.TypedProtocol.PingPong.Client -import Network.TypedProtocol.PingPong.Server +import Network.TypedProtocol.PingPong.Client +import Network.TypedProtocol.PingPong.Server -import Network.TypedProtocol.Peer.Client +import Network.TypedProtocol.Peer.Client -- | The standard stateless ping-pong server instance. diff --git a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Server.hs b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Server.hs index 768b9621..58696293 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Server.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Server.hs @@ -1,12 +1,10 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} {-# LANGUAGE RecordWildCards #-} module Network.TypedProtocol.PingPong.Server where -import Network.TypedProtocol.Core -import Network.TypedProtocol.Peer.Server -import Network.TypedProtocol.PingPong.Type +import Network.TypedProtocol.Core +import Network.TypedProtocol.Peer.Server +import Network.TypedProtocol.PingPong.Type data PingPongServer m a = PingPongServer { diff --git a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Type.hs b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Type.hs index 5c8c5534..a606dcb0 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Type.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/PingPong/Type.hs @@ -1,14 +1,8 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} - +{-# LANGUAGE TypeFamilies #-} module Network.TypedProtocol.PingPong.Type where -import Network.TypedProtocol.Core +import Network.TypedProtocol.Core -- | The ping\/pong protocol and the states in its protocol state machine. diff --git a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Client.hs b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Client.hs index 4bb1e6a4..81d93075 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Client.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Client.hs @@ -1,9 +1,3 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.ReqResp.Client ( -- * Normal client ReqRespClient (..) @@ -17,11 +11,11 @@ module Network.TypedProtocol.ReqResp.Client , requestOnce ) where -import Network.TypedProtocol.Core -import Network.TypedProtocol.Peer.Client -import Network.TypedProtocol.Peer.Server (Server) -import Network.TypedProtocol.Proofs (connect) -import Network.TypedProtocol.ReqResp.Type +import Network.TypedProtocol.Core +import Network.TypedProtocol.Peer.Client +import Network.TypedProtocol.Peer.Server (Server) +import Network.TypedProtocol.Proofs (connect) +import Network.TypedProtocol.ReqResp.Type data ReqRespClient req resp m a where SendMsgReq :: req diff --git a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Codec.hs b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Codec.hs index 9152de55..ae614278 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Codec.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Codec.hs @@ -1,18 +1,10 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.ReqResp.Codec where -import Network.TypedProtocol.Codec -import Network.TypedProtocol.Core -import Network.TypedProtocol.PingPong.Codec (decodeTerminatedFrame) -import Network.TypedProtocol.ReqResp.Type -import Text.Read (readMaybe) +import Network.TypedProtocol.Codec +import Network.TypedProtocol.Core +import Network.TypedProtocol.PingPong.Codec (decodeTerminatedFrame) +import Network.TypedProtocol.ReqResp.Type +import Text.Read (readMaybe) codecReqResp :: diff --git a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Codec/CBOR.hs b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Codec/CBOR.hs index 0f12bb3b..18935eee 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Codec/CBOR.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Codec/CBOR.hs @@ -1,28 +1,21 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.ReqResp.Codec.CBOR where -import Control.Monad.Class.MonadST +import Control.Monad.Class.MonadST -import Data.ByteString.Lazy (ByteString) +import Data.ByteString.Lazy (ByteString) -import qualified Codec.CBOR.Decoding as CBOR (Decoder, decodeListLen, - decodeWord) -import qualified Codec.CBOR.Encoding as CBOR (Encoding, encodeListLen, - encodeWord) -import qualified Codec.CBOR.Read as CBOR -import Codec.Serialise.Class (Serialise) -import qualified Codec.Serialise.Class as CBOR +import Codec.CBOR.Decoding qualified as CBOR (Decoder, decodeListLen, + decodeWord) +import Codec.CBOR.Encoding qualified as CBOR (Encoding, encodeListLen, + encodeWord) +import Codec.CBOR.Read qualified as CBOR +import Codec.Serialise.Class (Serialise) +import Codec.Serialise.Class qualified as CBOR -import Network.TypedProtocol.Codec -import Network.TypedProtocol.Codec.CBOR -import Network.TypedProtocol.Core -import Network.TypedProtocol.ReqResp.Type +import Network.TypedProtocol.Codec +import Network.TypedProtocol.Codec.CBOR +import Network.TypedProtocol.Core +import Network.TypedProtocol.ReqResp.Type codecReqResp :: forall req resp m. diff --git a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Examples.hs b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Examples.hs index ecfb1932..2b7706ac 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Examples.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Examples.hs @@ -1,15 +1,9 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.ReqResp.Examples where -import Network.TypedProtocol.ReqResp.Client -import Network.TypedProtocol.ReqResp.Server +import Network.TypedProtocol.ReqResp.Client +import Network.TypedProtocol.ReqResp.Server -import Network.TypedProtocol.Peer.Client +import Network.TypedProtocol.Peer.Client -- | An example request\/response client which ignores received responses. -- diff --git a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Server.hs b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Server.hs index dcb91806..1d8127c1 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Server.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Server.hs @@ -4,9 +4,9 @@ module Network.TypedProtocol.ReqResp.Server where -import Network.TypedProtocol.Core -import Network.TypedProtocol.Peer.Server -import Network.TypedProtocol.ReqResp.Type +import Network.TypedProtocol.Core +import Network.TypedProtocol.Peer.Server +import Network.TypedProtocol.ReqResp.Type data ReqRespServer req resp m a = ReqRespServer { diff --git a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Type.hs b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Type.hs index bd41a9f5..69df3221 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Type.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp/Type.hs @@ -1,15 +1,8 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} - +{-# LANGUAGE TypeFamilies #-} module Network.TypedProtocol.ReqResp.Type where -import Network.TypedProtocol.Core +import Network.TypedProtocol.Core data ReqResp req resp where diff --git a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp2/Client.hs b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp2/Client.hs index aa2fd081..ff6beb8a 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp2/Client.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp2/Client.hs @@ -1,18 +1,9 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeApplications #-} - - - module Network.TypedProtocol.ReqResp2.Client where -import Network.TypedProtocol.ReqResp2.Type +import Network.TypedProtocol.ReqResp2.Type -import Network.TypedProtocol.Core -import Network.TypedProtocol.Peer.Client +import Network.TypedProtocol.Core +import Network.TypedProtocol.Peer.Client reqResp2Client :: forall req resp m. diff --git a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp2/Type.hs b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp2/Type.hs index 14a567b0..706b05ef 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/ReqResp2/Type.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/ReqResp2/Type.hs @@ -1,15 +1,8 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} - +{-# LANGUAGE TypeFamilies #-} module Network.TypedProtocol.ReqResp2.Type where -import Network.TypedProtocol.Core +import Network.TypedProtocol.Core data ReqResp2 req resp where diff --git a/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Client.hs b/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Client.hs index e72a724b..e5160947 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Client.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Client.hs @@ -1,18 +1,11 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.Stateful.ReqResp.Client ( ReqRespClient (..) , reqRespClientPeer ) where -import Data.Typeable -import Network.TypedProtocol.Stateful.Peer.Client -import Network.TypedProtocol.Stateful.ReqResp.Type +import Data.Typeable +import Network.TypedProtocol.Stateful.Peer.Client +import Network.TypedProtocol.Stateful.ReqResp.Type data ReqRespClient req m a where SendMsgReq :: Typeable resp diff --git a/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Codec.hs b/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Codec.hs index 538ffd82..fb1ff8fb 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Codec.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Codec.hs @@ -1,21 +1,12 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeOperators #-} - module Network.TypedProtocol.Stateful.ReqResp.Codec where -import Data.Kind (Type) -import Data.Singletons.Decide -import Data.Typeable -import Network.TypedProtocol.Core -import Network.TypedProtocol.PingPong.Codec (decodeTerminatedFrame) -import Network.TypedProtocol.Stateful.Codec -import Network.TypedProtocol.Stateful.ReqResp.Type +import Data.Kind (Type) +import Data.Singletons.Decide +import Data.Typeable +import Network.TypedProtocol.Core +import Network.TypedProtocol.PingPong.Codec (decodeTerminatedFrame) +import Network.TypedProtocol.Stateful.Codec +import Network.TypedProtocol.Stateful.ReqResp.Type data Some (f :: k -> Type) where Some :: Typeable a => f a -> Some f diff --git a/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Examples.hs b/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Examples.hs index 7827e5a8..817c712e 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Examples.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Examples.hs @@ -1,14 +1,7 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.Stateful.ReqResp.Examples where -import Network.TypedProtocol.Stateful.ReqResp.Server -import Network.TypedProtocol.Stateful.ReqResp.Type +import Network.TypedProtocol.Stateful.ReqResp.Server +import Network.TypedProtocol.Stateful.ReqResp.Type fileRPCServer :: Monad m diff --git a/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Server.hs b/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Server.hs index 680ad2ea..91a12fa2 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Server.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Server.hs @@ -1,19 +1,11 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.Stateful.ReqResp.Server ( ReqRespServer (..) , reqRespServerPeer ) where -import Data.Typeable -import Network.TypedProtocol.Stateful.Peer.Server -import Network.TypedProtocol.Stateful.ReqResp.Type +import Data.Typeable +import Network.TypedProtocol.Stateful.Peer.Server +import Network.TypedProtocol.Stateful.ReqResp.Type data ReqRespServer req m a = ReqRespServer { diff --git a/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Type.hs b/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Type.hs index 31e06339..cb22bfad 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Type.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/Stateful/ReqResp/Type.hs @@ -1,12 +1,4 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeFamilies #-} - +{-# LANGUAGE TypeFamilies #-} -- | An RPC protocol which in which request type determines respond time. -- Unlike in the `Network.TypedProtocol.ReqResp.Type` where `req` and `resp` @@ -15,9 +7,9 @@ -- module Network.TypedProtocol.Stateful.ReqResp.Type where -import Data.Kind (Type) -import Data.Typeable -import Network.TypedProtocol.Core +import Data.Kind (Type) +import Data.Typeable +import Network.TypedProtocol.Core type ReqResp :: (Type -> Type) -> Type diff --git a/typed-protocols-examples/src/Network/TypedProtocol/Trans/Wedge.hs b/typed-protocols-examples/src/Network/TypedProtocol/Trans/Wedge.hs index 05a628ad..648964dc 100644 --- a/typed-protocols-examples/src/Network/TypedProtocol/Trans/Wedge.hs +++ b/typed-protocols-examples/src/Network/TypedProtocol/Trans/Wedge.hs @@ -1,24 +1,12 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE InstanceSigs #-} -{-# LANGUAGE KindSignatures #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE UndecidableInstances #-} module Network.TypedProtocol.Trans.Wedge where -import Network.TypedProtocol.Core +import Network.TypedProtocol.Core -import qualified Network.TypedProtocol.Peer.Client as Client -import qualified Network.TypedProtocol.PingPong.Type as PingPong +import Network.TypedProtocol.Peer.Client qualified as Client +import Network.TypedProtocol.PingPong.Type qualified as PingPong -- | A [wedge](https://hackage.haskell.org/package/smash-0.1.2/docs/Data-Wedge.html) diff --git a/typed-protocols-examples/test/Main.hs b/typed-protocols-examples/test/Main.hs index 950738d6..783f6707 100644 --- a/typed-protocols-examples/test/Main.hs +++ b/typed-protocols-examples/test/Main.hs @@ -1,9 +1,9 @@ module Main (main) where -import Test.Tasty +import Test.Tasty -import qualified Network.TypedProtocol.PingPong.Tests as PingPong -import qualified Network.TypedProtocol.ReqResp.Tests as ReqResp +import Network.TypedProtocol.PingPong.Tests qualified as PingPong +import Network.TypedProtocol.ReqResp.Tests qualified as ReqResp main :: IO () main = defaultMain tests diff --git a/typed-protocols-examples/test/Network/TypedProtocol/PingPong/Tests.hs b/typed-protocols-examples/test/Network/TypedProtocol/PingPong/Tests.hs index 65dfabaf..2a486796 100644 --- a/typed-protocols-examples/test/Network/TypedProtocol/PingPong/Tests.hs +++ b/typed-protocols-examples/test/Network/TypedProtocol/PingPong/Tests.hs @@ -1,9 +1,4 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} - +{-# LANGUAGE CPP #-} -- orphaned arbitrary instances {-# OPTIONS_GHC -Wno-orphans #-} @@ -16,39 +11,39 @@ module Network.TypedProtocol.PingPong.Tests ) where -import Network.TypedProtocol.Channel -import Network.TypedProtocol.Codec -import Network.TypedProtocol.Driver.Simple -import Network.TypedProtocol.Proofs +import Network.TypedProtocol.Channel +import Network.TypedProtocol.Codec +import Network.TypedProtocol.Driver.Simple +import Network.TypedProtocol.Proofs -import Network.TypedProtocol.PingPong.Client -import Network.TypedProtocol.PingPong.Codec -import qualified Network.TypedProtocol.PingPong.Codec.CBOR as CBOR -import Network.TypedProtocol.PingPong.Examples -import Network.TypedProtocol.PingPong.Server -import Network.TypedProtocol.PingPong.Type +import Network.TypedProtocol.PingPong.Client +import Network.TypedProtocol.PingPong.Codec +import Network.TypedProtocol.PingPong.Codec.CBOR qualified as CBOR +import Network.TypedProtocol.PingPong.Examples +import Network.TypedProtocol.PingPong.Server +import Network.TypedProtocol.PingPong.Type -import Control.Monad.Class.MonadAsync -import Control.Monad.Class.MonadSTM -import Control.Monad.Class.MonadThrow -import Control.Monad.IOSim (runSimOrThrow) -import Control.Monad.ST (runST) -import Control.Tracer (nullTracer) +import Control.Monad.Class.MonadAsync +import Control.Monad.Class.MonadSTM +import Control.Monad.Class.MonadThrow +import Control.Monad.IOSim (runSimOrThrow) +import Control.Monad.ST (runST) +import Control.Tracer (nullTracer) -import Data.Functor.Identity (Identity (..)) -import Data.List (inits, tails) +import Data.Functor.Identity (Identity (..)) +import Data.List (inits, tails) -import qualified Data.ByteString.Lazy as LBS +import Data.ByteString.Lazy qualified as LBS #if !defined(mingw32_HOST_OS) -import qualified Network.Socket as Socket -import System.Directory (removeFile) -import System.IO -import qualified System.Posix.Files as Posix +import Network.Socket qualified as Socket +import System.Directory (removeFile) +import System.IO +import System.Posix.Files qualified as Posix #endif -import Test.QuickCheck -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.QuickCheck (testProperty) +import Test.QuickCheck +import Test.Tasty (TestTree, testGroup) +import Test.Tasty.QuickCheck (testProperty) -- diff --git a/typed-protocols-examples/test/Network/TypedProtocol/ReqResp/Tests.hs b/typed-protocols-examples/test/Network/TypedProtocol/ReqResp/Tests.hs index a58c21e0..6826e295 100644 --- a/typed-protocols-examples/test/Network/TypedProtocol/ReqResp/Tests.hs +++ b/typed-protocols-examples/test/Network/TypedProtocol/ReqResp/Tests.hs @@ -1,57 +1,48 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} - +{-# LANGUAGE CPP #-} -- orphaned arbitrary instances {-# OPTIONS_GHC -Wno-orphans #-} - module Network.TypedProtocol.ReqResp.Tests (tests) where -import Network.TypedProtocol.Channel -import Network.TypedProtocol.Codec -import Network.TypedProtocol.Driver.Simple -import Network.TypedProtocol.Proofs - -import Network.TypedProtocol.ReqResp.Client -import Network.TypedProtocol.ReqResp.Codec -import qualified Network.TypedProtocol.ReqResp.Codec.CBOR as CBOR -import Network.TypedProtocol.ReqResp.Examples -import Network.TypedProtocol.ReqResp.Server -import Network.TypedProtocol.ReqResp.Type - -import Control.Exception (throw) -import Control.Monad.Class.MonadAsync -import Control.Monad.Class.MonadST -import Control.Monad.Class.MonadSTM -import Control.Monad.Class.MonadThrow -import Control.Monad.Class.MonadTimer.SI -import Control.Monad.IOSim -import Control.Monad.ST (runST) -import Control.Tracer (nullTracer) - -import Data.Functor.Identity (Identity (..)) -import Data.List (intercalate, mapAccumL) -import Data.Tuple (swap) +import Network.TypedProtocol.Channel +import Network.TypedProtocol.Codec +import Network.TypedProtocol.Driver.Simple +import Network.TypedProtocol.Proofs + +import Network.TypedProtocol.ReqResp.Client +import Network.TypedProtocol.ReqResp.Codec +import Network.TypedProtocol.ReqResp.Codec.CBOR qualified as CBOR +import Network.TypedProtocol.ReqResp.Examples +import Network.TypedProtocol.ReqResp.Server +import Network.TypedProtocol.ReqResp.Type + +import Control.Exception (throw) +import Control.Monad.Class.MonadAsync +import Control.Monad.Class.MonadST +import Control.Monad.Class.MonadSTM +import Control.Monad.Class.MonadThrow +import Control.Monad.Class.MonadTimer.SI +import Control.Monad.IOSim +import Control.Monad.ST (runST) +import Control.Tracer (nullTracer) + +import Data.Functor.Identity (Identity (..)) +import Data.List (intercalate, mapAccumL) +import Data.Tuple (swap) #if !defined(mingw32_HOST_OS) -import qualified Network.Socket as Socket -import System.Directory (removeFile) -import System.IO -import qualified System.Posix.Files as Posix +import Network.Socket qualified as Socket +import System.Directory (removeFile) +import System.IO +import System.Posix.Files qualified as Posix #endif -import Network.TypedProtocol.PingPong.Tests (splits2, splits2BS, - splits3, splits3BS) +import Network.TypedProtocol.PingPong.Tests (splits2, splits2BS, splits3, + splits3BS) -import Test.QuickCheck -import Test.Tasty (TestTree, testGroup) -import Test.Tasty.QuickCheck (testProperty) -import Text.Show.Functions () +import Test.QuickCheck +import Test.Tasty (TestTree, testGroup) +import Test.Tasty.QuickCheck (testProperty) +import Text.Show.Functions () -- diff --git a/typed-protocols-examples/typed-protocols-examples.cabal b/typed-protocols-examples/typed-protocols-examples.cabal index cc6d8ba7..63adb36f 100644 --- a/typed-protocols-examples/typed-protocols-examples.cabal +++ b/typed-protocols-examples/typed-protocols-examples.cabal @@ -45,14 +45,6 @@ library , Network.TypedProtocol.Stateful.ReqResp.Examples , Network.TypedProtocol.Trans.Wedge - other-extensions: GADTs - , RankNTypes - , PolyKinds - , DataKinds - , ScopedTypeVariables - , TypeFamilies - , TypeOperators - , BangPatterns build-depends: base, bytestring, cborg, @@ -64,9 +56,12 @@ library time, typed-protocols ^>= 0.4, typed-protocols-cborg, - typed-protocols-stateful, + typed-protocols-stateful hs-source-dirs: src - default-language: Haskell2010 + default-language: GHC2021 + default-extensions: DataKinds + GADTs + LambdaCase -- ghc-9.2 pulls `ghc-heap-9.12` which is not compatible if impl(ghc < 9.4) build-depends: ghc-heap < 9.12 @@ -102,7 +97,9 @@ test-suite test , network , unix - default-language: Haskell2010 + default-language: GHC2021 + default-extensions: DataKinds + GADTs ghc-options: -rtsopts -Wall -Wno-unticked-promoted-constructors diff --git a/typed-protocols-stateful-cborg/src/Network/TypedProtocol/Stateful/Codec/CBOR.hs b/typed-protocols-stateful-cborg/src/Network/TypedProtocol/Stateful/Codec/CBOR.hs index 552dc597..a9b0fdf4 100644 --- a/typed-protocols-stateful-cborg/src/Network/TypedProtocol/Stateful/Codec/CBOR.hs +++ b/typed-protocols-stateful-cborg/src/Network/TypedProtocol/Stateful/Codec/CBOR.hs @@ -1,10 +1,3 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE MonoLocalBinds #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} - module Network.TypedProtocol.Stateful.Codec.CBOR ( module Network.TypedProtocol.Stateful.Codec , DeserialiseFailure diff --git a/typed-protocols-stateful-cborg/typed-protocols-stateful-cborg.cabal b/typed-protocols-stateful-cborg/typed-protocols-stateful-cborg.cabal index c134068a..1de37540 100644 --- a/typed-protocols-stateful-cborg/typed-protocols-stateful-cborg.cabal +++ b/typed-protocols-stateful-cborg/typed-protocols-stateful-cborg.cabal @@ -31,8 +31,7 @@ library typed-protocols-stateful hs-source-dirs: src - default-language: Haskell2010 - default-extensions: ImportQualifiedPost + default-language: GHC2021 ghc-options: -Wall -Wno-unticked-promoted-constructors -Wcompat diff --git a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Codec.hs b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Codec.hs index 33451ac4..82394a53 100644 --- a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Codec.hs +++ b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Codec.hs @@ -1,18 +1,10 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE ViewPatterns #-} +{-# LANGUAGE PatternSynonyms #-} +{-# LANGUAGE QuantifiedConstraints #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE ViewPatterns #-} -- @UndecidableInstances@ extension is required for defining @Show@ instance of -- @'AnyMessage'@ and @'AnyMessage'@. -{-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-dodgy-imports #-} -- | Stateful codec. This module is intended to be imported qualified. diff --git a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Driver.hs b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Driver.hs index 90bdb64a..0209df08 100644 --- a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Driver.hs +++ b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Driver.hs @@ -1,14 +1,3 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeOperators #-} - -- | Actions for running 'Peer's with a 'Driver'. This module should be -- imported qualified. -- diff --git a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer.hs b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer.hs index 275ef953..c94d9734 100644 --- a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer.hs +++ b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer.hs @@ -1,16 +1,5 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeOperators #-} -- TODO: the 'Functor' instance of 'Peer' is undecidable -{-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE UndecidableInstances #-} -- | Protocol stateful EDSL. -- diff --git a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer/Client.hs b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer/Client.hs index 65eed230..6ea19b69 100644 --- a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer/Client.hs +++ b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer/Client.hs @@ -1,11 +1,4 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeOperators #-} +{-# LANGUAGE PatternSynonyms #-} -- | Bidirectional patterns for @'Peer' ps 'AsClient'@. The advantage of -- these patterns is that they automatically provide the 'RelativeAgencyEq' diff --git a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer/Server.hs b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer/Server.hs index 6c865539..5bec9ee4 100644 --- a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer/Server.hs +++ b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Peer/Server.hs @@ -1,11 +1,4 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeOperators #-} +{-# LANGUAGE PatternSynonyms #-} -- | Bidirectional patterns for @'Peer' ps 'AsServer'@. The advantage of -- these patterns is that they automatically provide the 'RelativeAgencyEq' diff --git a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Proofs.hs b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Proofs.hs index af1b3805..eaa9922b 100644 --- a/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Proofs.hs +++ b/typed-protocols-stateful/src/Network/TypedProtocol/Stateful/Proofs.hs @@ -1,11 +1,4 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} - +{-# LANGUAGE TypeFamilies #-} -- This is already implied by the -Wall in the .cabal file, but lets just be -- completely explicit about it too, since we rely on the completeness diff --git a/typed-protocols-stateful/typed-protocols-stateful.cabal b/typed-protocols-stateful/typed-protocols-stateful.cabal index bc0f891f..9703e167 100644 --- a/typed-protocols-stateful/typed-protocols-stateful.cabal +++ b/typed-protocols-stateful/typed-protocols-stateful.cabal @@ -22,24 +22,15 @@ library , Network.TypedProtocol.Stateful.Driver , Network.TypedProtocol.Stateful.Proofs , Network.TypedProtocol.Stateful.Codec - - other-extensions: GADTs - , RankNTypes - , PolyKinds - , DataKinds - , ScopedTypeVariables - , TypeFamilies - , TypeOperators - , BangPatterns - default-extensions: ImportQualifiedPost build-depends: base, contra-tracer, singletons >= 3.0, io-classes, typed-protocols ^>= 0.4 - hs-source-dirs: src - default-language: Haskell2010 + default-language: GHC2021 + default-extensions: DataKinds + GADTs ghc-options: -Wall -Wno-unticked-promoted-constructors -Wcompat diff --git a/typed-protocols/src/Network/TypedProtocol.hs b/typed-protocols/src/Network/TypedProtocol.hs index b79a0aec..5f0d716d 100644 --- a/typed-protocols/src/Network/TypedProtocol.hs +++ b/typed-protocols/src/Network/TypedProtocol.hs @@ -16,9 +16,9 @@ module Network.TypedProtocol , module Network.TypedProtocol.Driver ) where -import Network.TypedProtocol.Core -import Network.TypedProtocol.Driver -import Network.TypedProtocol.Proofs +import Network.TypedProtocol.Core +import Network.TypedProtocol.Driver +import Network.TypedProtocol.Proofs -- $intro diff --git a/typed-protocols/src/Network/TypedProtocol/Codec.hs b/typed-protocols/src/Network/TypedProtocol/Codec.hs index 5b16e98f..8c259ee5 100644 --- a/typed-protocols/src/Network/TypedProtocol/Codec.hs +++ b/typed-protocols/src/Network/TypedProtocol/Codec.hs @@ -1,14 +1,5 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} {-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} -- @UndecidableInstances@ extension is required for defining @Show@ instance of -- @'AnyMessage'@ and @'AnyMessage'@. {-# LANGUAGE UndecidableInstances #-} @@ -57,12 +48,12 @@ module Network.TypedProtocol.Codec , SomeState (..) ) where -import Control.Exception (Exception) -import Data.Kind (Type) -import Data.Monoid (All (..)) +import Control.Exception (Exception) +import Data.Kind (Type) +import Data.Monoid (All (..)) -import Network.TypedProtocol.Core -import Network.TypedProtocol.Driver (SomeMessage (..)) +import Network.TypedProtocol.Core +import Network.TypedProtocol.Driver (SomeMessage (..)) -- | A codec for a 'Protocol' handles the encoding and decoding of typed diff --git a/typed-protocols/src/Network/TypedProtocol/Core.hs b/typed-protocols/src/Network/TypedProtocol/Core.hs index e8314979..3fdbb9b3 100644 --- a/typed-protocols/src/Network/TypedProtocol/Core.hs +++ b/typed-protocols/src/Network/TypedProtocol/Core.hs @@ -1,20 +1,7 @@ -{-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeFamilyDependencies #-} -{-# LANGUAGE TypeOperators #-} -{-# LANGUAGE ViewPatterns #-} +{-# LANGUAGE DerivingVia #-} +{-# LANGUAGE PatternSynonyms #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE ViewPatterns #-} {-# OPTIONS_HADDOCK show-extensions #-} @@ -64,10 +51,10 @@ module Network.TypedProtocol.Core , unsafeIntToNat ) where -import Data.Kind (Constraint, Type) -import Unsafe.Coerce (unsafeCoerce) +import Data.Kind (Constraint, Type) +import Unsafe.Coerce (unsafeCoerce) -import Data.Singletons +import Data.Singletons -- $intro -- A typed protocol between two peers is defined via a state machine: a diff --git a/typed-protocols/src/Network/TypedProtocol/Driver.hs b/typed-protocols/src/Network/TypedProtocol/Driver.hs index b12d66c9..607d641d 100644 --- a/typed-protocols/src/Network/TypedProtocol/Driver.hs +++ b/typed-protocols/src/Network/TypedProtocol/Driver.hs @@ -1,13 +1,4 @@ -{-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE TypeFamilies #-} -- | Actions for running 'Peer's with a 'Driver' -- @@ -23,15 +14,15 @@ module Network.TypedProtocol.Driver , runPipelinedPeerWithDriver ) where -import Data.Void (Void) +import Data.Void (Void) -import Network.TypedProtocol.Core -import Network.TypedProtocol.Peer +import Network.TypedProtocol.Core +import Network.TypedProtocol.Peer -import Control.Concurrent.Class.MonadSTM.TQueue -import Control.Monad.Class.MonadAsync -import Control.Monad.Class.MonadFork -import Control.Monad.Class.MonadSTM +import Control.Concurrent.Class.MonadSTM.TQueue +import Control.Monad.Class.MonadAsync +import Control.Monad.Class.MonadFork +import Control.Monad.Class.MonadSTM -- $intro diff --git a/typed-protocols/src/Network/TypedProtocol/Lemmas.hs b/typed-protocols/src/Network/TypedProtocol/Lemmas.hs index 20bc5f0a..3e55771f 100644 --- a/typed-protocols/src/Network/TypedProtocol/Lemmas.hs +++ b/typed-protocols/src/Network/TypedProtocol/Lemmas.hs @@ -1,9 +1,4 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} {-# HLINT ignore "Use camelCase" #-} @@ -16,8 +11,8 @@ -- module Network.TypedProtocol.Lemmas where -import Data.Kind (Type) -import Network.TypedProtocol.Core +import Data.Kind (Type) +import Network.TypedProtocol.Core -- $about diff --git a/typed-protocols/src/Network/TypedProtocol/Peer.hs b/typed-protocols/src/Network/TypedProtocol/Peer.hs index 1f1097c1..92c2c469 100644 --- a/typed-protocols/src/Network/TypedProtocol/Peer.hs +++ b/typed-protocols/src/Network/TypedProtocol/Peer.hs @@ -1,13 +1,4 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DerivingVia #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeOperators #-} +{-# LANGUAGE DerivingVia #-} -- | Protocol EDSL. -- @@ -22,9 +13,9 @@ module Network.TypedProtocol.Peer , unsafeIntToNat ) where -import Data.Kind (Type) +import Data.Kind (Type) -import Network.TypedProtocol.Core as Core +import Network.TypedProtocol.Core as Core -- | A description of a peer that engages in a protocol. -- diff --git a/typed-protocols/src/Network/TypedProtocol/Peer/Client.hs b/typed-protocols/src/Network/TypedProtocol/Peer/Client.hs index 60c355c4..c77c15d4 100644 --- a/typed-protocols/src/Network/TypedProtocol/Peer/Client.hs +++ b/typed-protocols/src/Network/TypedProtocol/Peer/Client.hs @@ -1,11 +1,4 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeOperators #-} +{-# LANGUAGE PatternSynonyms #-} -- | Bidirectional patterns for @'Peer' ps 'AsClient'@. The advantage of -- these patterns is that they automatically provide the 'ReflRelativeAgency' @@ -35,11 +28,11 @@ module Network.TypedProtocol.Peer.Client , Nat (..) ) where -import Data.Kind (Type) +import Data.Kind (Type) -import Network.TypedProtocol.Core -import Network.TypedProtocol.Peer (Peer) -import qualified Network.TypedProtocol.Peer as TP +import Network.TypedProtocol.Core +import Network.TypedProtocol.Peer (Peer) +import Network.TypedProtocol.Peer qualified as TP type Client :: forall ps diff --git a/typed-protocols/src/Network/TypedProtocol/Peer/Server.hs b/typed-protocols/src/Network/TypedProtocol/Peer/Server.hs index 025fbf3f..67c45623 100644 --- a/typed-protocols/src/Network/TypedProtocol/Peer/Server.hs +++ b/typed-protocols/src/Network/TypedProtocol/Peer/Server.hs @@ -1,11 +1,5 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PatternSynonyms #-} -{-# LANGUAGE PolyKinds #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE StandaloneKindSignatures #-} -{-# LANGUAGE TypeOperators #-} +{-# LANGUAGE PatternSynonyms #-} +{-# LANGUAGE TypeOperators #-} -- | Bidirectional patterns for @'Peer' ps 'AsServer'@. The advantage of -- these patterns is that they automatically provide the 'ReflRelativeAgency' @@ -35,11 +29,11 @@ module Network.TypedProtocol.Peer.Server , Nat (..) ) where -import Data.Kind (Type) +import Data.Kind (Type) -import Network.TypedProtocol.Core -import Network.TypedProtocol.Peer (Peer) -import qualified Network.TypedProtocol.Peer as TP +import Network.TypedProtocol.Core +import Network.TypedProtocol.Peer (Peer) +import Network.TypedProtocol.Peer qualified as TP type Server :: forall ps diff --git a/typed-protocols/src/Network/TypedProtocol/Proofs.hs b/typed-protocols/src/Network/TypedProtocol/Proofs.hs index 69125573..4f70c86a 100644 --- a/typed-protocols/src/Network/TypedProtocol/Proofs.hs +++ b/typed-protocols/src/Network/TypedProtocol/Proofs.hs @@ -1,13 +1,5 @@ -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE EmptyCase #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE PolyKinds #-} {-# LANGUAGE QuantifiedConstraints #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} -- This is already implied by the -Wall in the .cabal file, but lets just be -- completely explicit about it too, since we rely on the completeness @@ -32,10 +24,10 @@ module Network.TypedProtocol.Proofs , pipelineInterleaving ) where -import Data.Singletons -import Network.TypedProtocol.Core -import Network.TypedProtocol.Lemmas -import Network.TypedProtocol.Peer +import Data.Singletons +import Network.TypedProtocol.Core +import Network.TypedProtocol.Lemmas +import Network.TypedProtocol.Peer -- | The 'connect' function takes two peers that agree on a protocol and runs diff --git a/typed-protocols/typed-protocols.cabal b/typed-protocols/typed-protocols.cabal index 5fb28990..96e93408 100644 --- a/typed-protocols/typed-protocols.cabal +++ b/typed-protocols/typed-protocols.cabal @@ -25,21 +25,14 @@ library , Network.TypedProtocol.Driver , Network.TypedProtocol.Proofs other-modules: Network.TypedProtocol.Lemmas - - other-extensions: GADTs - , RankNTypes - , PolyKinds - , DataKinds - , ScopedTypeVariables - , TypeFamilies - , TypeOperators - , BangPatterns build-depends: base, io-classes:io-classes ^>= 1.7, singletons >= 3.0 hs-source-dirs: src - default-language: Haskell2010 + default-language: GHC2021 + default-extensions: DataKinds + GADTs ghc-options: -Wall -Wno-unticked-promoted-constructors -Wcompat