Skip to content
Snippets Groups Projects
Commit 5ea70d4e authored by Herbert Valerio Riedel's avatar Herbert Valerio Riedel :man_dancing:
Browse files

Add more `@since` annotations

parent b2adee4b
No related branches found
No related tags found
No related merge requests found
...@@ -135,6 +135,8 @@ readTChan (TChan read _write) = do ...@@ -135,6 +135,8 @@ readTChan (TChan read _write) = do
-- | A version of 'readTChan' which does not retry. Instead it -- | A version of 'readTChan' which does not retry. Instead it
-- returns @Nothing@ if no value is available. -- returns @Nothing@ if no value is available.
--
-- @since 2.3
tryReadTChan :: TChan a -> STM (Maybe a) tryReadTChan :: TChan a -> STM (Maybe a)
tryReadTChan (TChan read _write) = do tryReadTChan (TChan read _write) = do
listhead <- readTVar read listhead <- readTVar read
...@@ -147,6 +149,8 @@ tryReadTChan (TChan read _write) = do ...@@ -147,6 +149,8 @@ tryReadTChan (TChan read _write) = do
-- | Get the next value from the @TChan@ without removing it, -- | Get the next value from the @TChan@ without removing it,
-- retrying if the channel is empty. -- retrying if the channel is empty.
--
-- @since 2.3
peekTChan :: TChan a -> STM a peekTChan :: TChan a -> STM a
peekTChan (TChan read _write) = do peekTChan (TChan read _write) = do
listhead <- readTVar read listhead <- readTVar read
...@@ -157,6 +161,8 @@ peekTChan (TChan read _write) = do ...@@ -157,6 +161,8 @@ peekTChan (TChan read _write) = do
-- | A version of 'peekTChan' which does not retry. Instead it -- | A version of 'peekTChan' which does not retry. Instead it
-- returns @Nothing@ if no value is available. -- returns @Nothing@ if no value is available.
--
-- @since 2.3
tryPeekTChan :: TChan a -> STM (Maybe a) tryPeekTChan :: TChan a -> STM (Maybe a)
tryPeekTChan (TChan read _write) = do tryPeekTChan (TChan read _write) = do
listhead <- readTVar read listhead <- readTVar read
......
...@@ -135,6 +135,8 @@ readTMVar (TMVar t) = do ...@@ -135,6 +135,8 @@ readTMVar (TMVar t) = do
-- | A version of 'readTMVar' which does not retry. Instead it -- | A version of 'readTMVar' which does not retry. Instead it
-- returns @Nothing@ if no value is available. -- returns @Nothing@ if no value is available.
--
-- @since 2.3
tryReadTMVar :: TMVar a -> STM (Maybe a) tryReadTMVar :: TMVar a -> STM (Maybe a)
tryReadTMVar (TMVar t) = readTVar t tryReadTMVar (TMVar t) = readTVar t
......
...@@ -46,6 +46,8 @@ import Control.Sequential.STM ...@@ -46,6 +46,8 @@ import Control.Sequential.STM
-- Like 'modifyIORef' but for 'TVar'. -- Like 'modifyIORef' but for 'TVar'.
-- | Mutate the contents of a 'TVar'. /N.B./, this version is -- | Mutate the contents of a 'TVar'. /N.B./, this version is
-- non-strict. -- non-strict.
--
-- @since 2.3
modifyTVar :: TVar a -> (a -> a) -> STM () modifyTVar :: TVar a -> (a -> a) -> STM ()
modifyTVar var f = do modifyTVar var f = do
x <- readTVar var x <- readTVar var
...@@ -54,6 +56,8 @@ modifyTVar var f = do ...@@ -54,6 +56,8 @@ modifyTVar var f = do
-- | Strict version of 'modifyTVar'. -- | Strict version of 'modifyTVar'.
--
-- @since 2.3
modifyTVar' :: TVar a -> (a -> a) -> STM () modifyTVar' :: TVar a -> (a -> a) -> STM ()
modifyTVar' var f = do modifyTVar' var f = do
x <- readTVar var x <- readTVar var
...@@ -63,6 +67,8 @@ modifyTVar' var f = do ...@@ -63,6 +67,8 @@ modifyTVar' var f = do
-- Like 'swapTMVar' but for 'TVar'. -- Like 'swapTMVar' but for 'TVar'.
-- | Swap the contents of a 'TVar' for a new value. -- | Swap the contents of a 'TVar' for a new value.
--
-- @since 2.3
swapTVar :: TVar a -> a -> STM a swapTVar :: TVar a -> a -> STM a
swapTVar var new = do swapTVar var new = do
old <- readTVar var old <- readTVar var
......
...@@ -124,6 +124,7 @@ data STMret a = STMret (State# RealWorld) a ...@@ -124,6 +124,7 @@ data STMret a = STMret (State# RealWorld) a
liftSTM :: STM a -> State# RealWorld -> STMret a liftSTM :: STM a -> State# RealWorld -> STMret a
liftSTM (STM m) = \s -> case m s of (# s', r #) -> STMret s' r liftSTM (STM m) = \s -> case m s of (# s', r #) -> STMret s' r
-- | @since 2.3
instance MonadFix STM where instance MonadFix STM where
mfix k = STM $ \s -> mfix k = STM $ \s ->
let ans = liftSTM (k r) s let ans = liftSTM (k r) s
......
...@@ -51,6 +51,7 @@ atomically (STM m) = do ...@@ -51,6 +51,7 @@ atomically (STM m) = do
rollback <- readIORef r rollback <- readIORef r
rollback rollback
-- | @since 2.2.0
throwSTM :: Exception e => e -> STM a throwSTM :: Exception e => e -> STM a
throwSTM = STM . const . throwIO throwSTM = STM . const . throwIO
...@@ -83,6 +84,7 @@ newTVarIO a = do ...@@ -83,6 +84,7 @@ newTVarIO a = do
readTVar :: TVar a -> STM a readTVar :: TVar a -> STM a
readTVar (TVar ref) = STM (const (readIORef ref)) readTVar (TVar ref) = STM (const (readIORef ref))
-- | @since 2.1.2
readTVarIO :: TVar a -> IO a readTVarIO :: TVar a -> IO a
readTVarIO (TVar ref) = readIORef ref readTVarIO (TVar ref) = readIORef ref
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment