Skip to content

Commit e0f27d5

Browse files
nitinprakash96bolt12
authored andcommitted
Add missing writeTMVar to MonadSTM
1 parent c75ca9a commit e0f27d5

File tree

5 files changed

+21
-0
lines changed
  • io-classes-mtl/src/Control/Monad/Class/MonadSTM
  • io-classes/src/Control
  • io-sim/src/Control/Monad/IOSim
  • strict-stm/src/Control/Concurrent/Class/MonadSTM/Strict

5 files changed

+21
-0
lines changed

io-classes-mtl/src/Control/Monad/Class/MonadSTM/Trans.hs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ instance MonadSTM m => MonadSTM (ContT r m) where
106106
readTMVar = ContTSTM . readTMVar
107107
tryReadTMVar = ContTSTM . tryReadTMVar
108108
swapTMVar = ContTSTM .: swapTMVar
109+
writeTMVar = ContTSTM .: writeTMVar
109110
isEmptyTMVar = ContTSTM . isEmptyTMVar
110111

111112
type TQueue (ContT r m) = TQueue m
@@ -183,6 +184,7 @@ instance (Monoid w, MonadSTM m) => MonadSTM (Lazy.WriterT w m) where
183184
readTMVar = lift . readTMVar
184185
tryReadTMVar = lift . tryReadTMVar
185186
swapTMVar = lift .: swapTMVar
187+
writeTMVar = lift .: writeTMVar
186188
isEmptyTMVar = lift . isEmptyTMVar
187189

188190
type TQueue (Lazy.WriterT w m) = TQueue m
@@ -260,6 +262,7 @@ instance (Monoid w, MonadSTM m) => MonadSTM (Strict.WriterT w m) where
260262
readTMVar = lift . readTMVar
261263
tryReadTMVar = lift . tryReadTMVar
262264
swapTMVar = lift .: swapTMVar
265+
writeTMVar = lift .: writeTMVar
263266
isEmptyTMVar = lift . isEmptyTMVar
264267

265268
type TQueue (Strict.WriterT w m) = TQueue m
@@ -337,6 +340,7 @@ instance MonadSTM m => MonadSTM (Lazy.StateT s m) where
337340
readTMVar = lift . readTMVar
338341
tryReadTMVar = lift . tryReadTMVar
339342
swapTMVar = lift .: swapTMVar
343+
writeTMVar = lift .: writeTMVar
340344
isEmptyTMVar = lift . isEmptyTMVar
341345

342346
type TQueue (Lazy.StateT s m) = TQueue m
@@ -414,6 +418,7 @@ instance MonadSTM m => MonadSTM (Strict.StateT s m) where
414418
readTMVar = lift . readTMVar
415419
tryReadTMVar = lift . tryReadTMVar
416420
swapTMVar = lift .: swapTMVar
421+
writeTMVar = lift .: writeTMVar
417422
isEmptyTMVar = lift . isEmptyTMVar
418423

419424
type TQueue (Strict.StateT s m) = TQueue m
@@ -491,6 +496,7 @@ instance MonadSTM m => MonadSTM (ExceptT e m) where
491496
readTMVar = lift . readTMVar
492497
tryReadTMVar = lift . tryReadTMVar
493498
swapTMVar = lift .: swapTMVar
499+
writeTMVar = lift .: writeTMVar
494500
isEmptyTMVar = lift . isEmptyTMVar
495501

496502
type TQueue (ExceptT e m) = TQueue m
@@ -568,6 +574,7 @@ instance (Monoid w, MonadSTM m) => MonadSTM (Lazy.RWST r w s m) where
568574
readTMVar = lift . readTMVar
569575
tryReadTMVar = lift . tryReadTMVar
570576
swapTMVar = lift .: swapTMVar
577+
writeTMVar = lift .: writeTMVar
571578
isEmptyTMVar = lift . isEmptyTMVar
572579

573580
type TQueue (Lazy.RWST r w s m) = TQueue m
@@ -645,6 +652,7 @@ instance (Monoid w, MonadSTM m) => MonadSTM (Strict.RWST r w s m) where
645652
readTMVar = lift . readTMVar
646653
tryReadTMVar = lift . tryReadTMVar
647654
swapTMVar = lift .: swapTMVar
655+
writeTMVar = lift .: writeTMVar
648656
isEmptyTMVar = lift . isEmptyTMVar
649657

650658
type TQueue (Strict.RWST r w s m) = TQueue m

io-classes/src/Control/Concurrent/Class/MonadSTM/TMVar.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ module Control.Concurrent.Class.MonadSTM.TMVar
1616
, readTMVar
1717
, tryReadTMVar
1818
, swapTMVar
19+
, writeTMVar
1920
, isEmptyTMVar
2021
-- * MonadLabelledSTM
2122
, labelTMVar

io-classes/src/Control/Monad/Class/MonadSTM/Internal.hs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ module Control.Monad.Class.MonadSTM.Internal
4545
, readTMVarDefault
4646
, tryReadTMVarDefault
4747
, swapTMVarDefault
48+
, writeTMVarDefault
4849
, isEmptyTMVarDefault
4950
, labelTMVarDefault
5051
, traceTMVarDefault
@@ -189,6 +190,7 @@ class (Monad m, Monad (STM m)) => MonadSTM m where
189190
readTMVar :: TMVar m a -> STM m a
190191
tryReadTMVar :: TMVar m a -> STM m (Maybe a)
191192
swapTMVar :: TMVar m a -> a -> STM m a
193+
writeTMVar :: TMVar m a -> a -> STM m ()
192194
isEmptyTMVar :: TMVar m a -> STM m Bool
193195

194196
type TQueue m :: Type -> Type
@@ -569,6 +571,7 @@ instance MonadSTM IO where
569571
readTMVar = STM.readTMVar
570572
tryReadTMVar = STM.tryReadTMVar
571573
swapTMVar = STM.swapTMVar
574+
writeTMVar = STM.writeTMVar
572575
isEmptyTMVar = STM.isEmptyTMVar
573576
newTQueue = STM.newTQueue
574577
readTQueue = STM.readTQueue
@@ -740,6 +743,9 @@ swapTMVarDefault (TMVar t) new = do
740743
Nothing -> retry
741744
Just old -> do writeTVar t (Just new); return old
742745

746+
writeTMVarDefault :: MonadSTM m => TMVarDefault m a -> a -> STM m ()
747+
writeTMVarDefault (TMVar t) new = writeTVar t (Just new)
748+
743749
isEmptyTMVarDefault :: MonadSTM m => TMVarDefault m a -> STM m Bool
744750
isEmptyTMVarDefault (TMVar t) = do
745751
m <- readTVar t
@@ -1188,6 +1194,7 @@ instance MonadSTM m => MonadSTM (ReaderT r m) where
11881194
readTMVar = lift . readTMVar
11891195
tryReadTMVar = lift . tryReadTMVar
11901196
swapTMVar = lift .: swapTMVar
1197+
writeTMVar = lift .: writeTMVar
11911198
isEmptyTMVar = lift . isEmptyTMVar
11921199

11931200
type TQueue (ReaderT r m) = TQueue m

io-sim/src/Control/Monad/IOSim/Types.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,7 @@ instance MonadSTM (IOSim s) where
516516
readTMVar = MonadSTM.readTMVarDefault
517517
tryReadTMVar = MonadSTM.tryReadTMVarDefault
518518
swapTMVar = MonadSTM.swapTMVarDefault
519+
writeTMVar = MonadSTM.writeTMVarDefault
519520
isEmptyTMVar = MonadSTM.isEmptyTMVarDefault
520521

521522
newTQueue = newTQueueDefault

strict-stm/src/Control/Concurrent/Class/MonadSTM/Strict/TMVar.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module Control.Concurrent.Class.MonadSTM.Strict.TMVar
2323
, readTMVar
2424
, tryReadTMVar
2525
, swapTMVar
26+
, writeTMVar
2627
, isEmptyTMVar
2728
-- * MonadLabelledSTM
2829
, labelTMVar
@@ -101,5 +102,8 @@ tryReadTMVar (StrictTMVar tmvar) = Lazy.tryReadTMVar tmvar
101102
swapTMVar :: MonadSTM m => StrictTMVar m a -> a -> STM m a
102103
swapTMVar (StrictTMVar tmvar) !a = Lazy.swapTMVar tmvar a
103104

105+
writeTMVar :: MonadSTM m => StrictTMVar m a -> a -> STM m ()
106+
writeTMVar (StrictTMVar tmvar) !a = Lazy.writeTMVar tmvar a
107+
104108
isEmptyTMVar :: MonadSTM m => StrictTMVar m a -> STM m Bool
105109
isEmptyTMVar (StrictTMVar tmvar) = Lazy.isEmptyTMVar tmvar

0 commit comments

Comments
 (0)