Skip to content

Commit ce23659

Browse files
authored
Implement Monad(LabelledSTM,InspectSTM,TraceSTM,Say) for WithEarlyExit (#1263)
2 parents d707a2a + e0f31fe commit ce23659

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### Non-Breaking
2+
3+
- Implement `Monad(LabelledSTM,InspectSTM,TraceSTM,Say)` instances for `WithEarlyExit`.

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Util/EarlyExit.hs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import Control.Monad
2626
import Control.Monad.Class.MonadAsync
2727
import Control.Monad.Class.MonadEventlog
2828
import Control.Monad.Class.MonadFork
29+
import Control.Monad.Class.MonadSay
2930
import Control.Monad.Class.MonadST
3031
import Control.Monad.Class.MonadSTM.Internal
3132
import Control.Monad.Class.MonadThrow
@@ -302,6 +303,37 @@ instance MonadEventlog m => MonadEventlog (WithEarlyExit m) where
302303
traceEventIO = lift . traceEventIO
303304
traceMarkerIO = lift . traceMarkerIO
304305

306+
instance MonadLabelledSTM m => MonadLabelledSTM (WithEarlyExit m) where
307+
labelTVar = lift .: labelTVar
308+
labelTMVar = lift .: labelTMVar
309+
labelTQueue = lift .: labelTQueue
310+
labelTBQueue = lift .: labelTBQueue
311+
labelTArray = lift .: labelTArray
312+
labelTSem = lift .: labelTSem
313+
labelTChan = lift .: labelTChan
314+
labelTVarIO = lift .: labelTVarIO
315+
labelTMVarIO = lift .: labelTMVarIO
316+
labelTQueueIO = lift .: labelTQueueIO
317+
labelTBQueueIO = lift .: labelTBQueueIO
318+
labelTArrayIO = lift .: labelTArrayIO
319+
labelTSemIO = lift .: labelTSemIO
320+
labelTChanIO = lift .: labelTChanIO
321+
322+
instance MonadSay m => MonadSay (WithEarlyExit m) where
323+
say = lift . say
324+
325+
instance (MonadInspectSTM m, Monad (InspectMonad m)) => MonadInspectSTM (WithEarlyExit m) where
326+
type InspectMonad (WithEarlyExit m) = InspectMonad m
327+
inspectTVar _ = inspectTVar (Proxy @m)
328+
inspectTMVar _ = inspectTMVar (Proxy @m)
329+
330+
instance MonadTraceSTM m => MonadTraceSTM (WithEarlyExit m) where
331+
traceTVar _ = lift .: traceTVar (Proxy @m)
332+
traceTMVar _ = lift .: traceTMVar (Proxy @m)
333+
traceTQueue _ = lift .: traceTQueue (Proxy @m)
334+
traceTBQueue _ = lift .: traceTBQueue (Proxy @m)
335+
traceTSem _ = lift .: traceTSem (Proxy @m)
336+
305337
{-------------------------------------------------------------------------------
306338
Finally, the consensus IOLike wrapper
307339
-------------------------------------------------------------------------------}

0 commit comments

Comments
 (0)