Skip to content

Commit 4a617f2

Browse files
committed
MonadLabelledSTM: added labelTChan
1 parent 051d04f commit 4a617f2

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@ class MonadSTM m
433433
labelTArray :: (Ix i, Show i)
434434
=> TArray m i e -> String -> STM m ()
435435
labelTSem :: TSem m -> String -> STM m ()
436+
labelTChan :: TChan m a -> String -> STM m ()
436437

437438
labelTVarIO :: TVar m a -> String -> m ()
438439
labelTMVarIO :: TMVar m a -> String -> m ()
@@ -441,6 +442,7 @@ class MonadSTM m
441442
labelTArrayIO :: (Ix i, Show i)
442443
=> TArray m i e -> String -> m ()
443444
labelTSemIO :: TSem m -> String -> m ()
445+
labelTChanIO :: TChan m a -> String -> m ()
444446

445447
--
446448
-- default implementations
@@ -462,6 +464,10 @@ class MonadSTM m
462464
=> TSem m -> String -> STM m ()
463465
labelTSem = labelTSemDefault
464466

467+
default labelTChan :: TChan m ~ TChanDefault m
468+
=> TChan m a -> String -> STM m ()
469+
labelTChan = labelTChanDefault
470+
465471
default labelTArray :: ( TArray m ~ TArrayDefault m
466472
, Ix i
467473
, Show i
@@ -488,6 +494,9 @@ class MonadSTM m
488494
default labelTSemIO :: TSem m -> String -> m ()
489495
labelTSemIO = \v l -> atomically (labelTSem v l)
490496

497+
default labelTChanIO :: TChan m a -> String -> m ()
498+
labelTChanIO = \v l -> atomically (labelTChan v l)
499+
491500

492501
-- | This type class is indented for 'io-sim', where one might want to access
493502
-- 'TVar' in the underlying 'ST' monad.
@@ -738,13 +747,15 @@ instance MonadLabelledSTM IO where
738747
labelTBQueue = \_ _ -> return ()
739748
labelTArray = \_ _ -> return ()
740749
labelTSem = \_ _ -> return ()
750+
labelTChan = \_ _ -> return ()
741751

742752
labelTVarIO = \_ _ -> return ()
743753
labelTMVarIO = \_ _ -> return ()
744754
labelTQueueIO = \_ _ -> return ()
745755
labelTBQueueIO = \_ _ -> return ()
746756
labelTArrayIO = \_ _ -> return ()
747757
labelTSemIO = \_ _ -> return ()
758+
labelTChanIO = \_ _ -> return ()
748759

749760
-- | noop instance
750761
--
@@ -1183,6 +1194,11 @@ data TList m a = TNil | TCons a (TVarList m a)
11831194

11841195
data TChanDefault m a = TChan (TVar m (TVarList m a)) (TVar m (TVarList m a))
11851196

1197+
labelTChanDefault :: MonadLabelledSTM m => TChanDefault m a -> String -> STM m ()
1198+
labelTChanDefault (TChan read write) name = do
1199+
labelTVar read (name ++ ":read")
1200+
labelTVar write (name ++ ":write")
1201+
11861202
newTChanDefault :: MonadSTM m => STM m (TChanDefault m a)
11871203
newTChanDefault = do
11881204
hole <- newTVar TNil

0 commit comments

Comments
 (0)