@@ -99,7 +99,7 @@ newEmptyMVarWithInvariant inv = StrictMVar inv <$> Lazy.newEmptyMVar
99
99
newMVar :: MonadMVar m => a -> m (StrictMVar m a )
100
100
newMVar ! a = fromLazyMVar <$> Lazy. newMVar a
101
101
102
- newMVarWithInvariant :: MonadMVar m
102
+ newMVarWithInvariant :: ( HasCallStack , MonadMVar m )
103
103
=> (a -> Maybe String )
104
104
-> a
105
105
-> m (StrictMVar m a )
@@ -110,23 +110,23 @@ newMVarWithInvariant inv !a =
110
110
takeMVar :: MonadMVar m => StrictMVar m a -> m a
111
111
takeMVar = Lazy. takeMVar . mvar
112
112
113
- putMVar :: MonadMVar m => StrictMVar m a -> a -> m ()
113
+ putMVar :: ( HasCallStack , MonadMVar m ) => StrictMVar m a -> a -> m ()
114
114
putMVar v ! a = do
115
115
Lazy. putMVar (mvar v) a
116
116
checkInvariant (invariant v a) $ pure ()
117
117
118
118
readMVar :: MonadMVar m => StrictMVar m a -> m a
119
119
readMVar v = Lazy. readMVar (mvar v)
120
120
121
- swapMVar :: MonadMVar m => StrictMVar m a -> a -> m a
121
+ swapMVar :: ( HasCallStack , MonadMVar m ) => StrictMVar m a -> a -> m a
122
122
swapMVar v ! a = do
123
123
oldValue <- Lazy. swapMVar (mvar v) a
124
124
checkInvariant (invariant v a) $ pure oldValue
125
125
126
126
tryTakeMVar :: MonadMVar m => StrictMVar m a -> m (Maybe a )
127
127
tryTakeMVar v = Lazy. tryTakeMVar (mvar v)
128
128
129
- tryPutMVar :: MonadMVar m => StrictMVar m a -> a -> m Bool
129
+ tryPutMVar :: ( HasCallStack , MonadMVar m ) => StrictMVar m a -> a -> m Bool
130
130
tryPutMVar v ! a = do
131
131
didPut <- Lazy. tryPutMVar (mvar v) a
132
132
checkInvariant (invariant v a) $ pure didPut
@@ -141,11 +141,17 @@ withMVarMasked :: MonadMVar m => StrictMVar m a -> (a -> m b) -> m b
141
141
withMVarMasked v = Lazy. withMVarMasked (mvar v)
142
142
143
143
-- | 'modifyMVar_' is defined in terms of 'modifyMVar'.
144
- modifyMVar_ :: MonadMVar m => StrictMVar m a -> (a -> m a ) -> m ()
144
+ modifyMVar_ :: (HasCallStack , MonadMVar m )
145
+ => StrictMVar m a
146
+ -> (a -> m a )
147
+ -> m ()
145
148
modifyMVar_ v io = modifyMVar v io'
146
149
where io' a = (,() ) <$> io a
147
150
148
- modifyMVar :: MonadMVar m => StrictMVar m a -> (a -> m (a ,b )) -> m b
151
+ modifyMVar :: (HasCallStack , MonadMVar m )
152
+ => StrictMVar m a
153
+ -> (a -> m (a ,b ))
154
+ -> m b
149
155
modifyMVar v io = do
150
156
(a', b) <- Lazy. modifyMVar (mvar v) io'
151
157
checkInvariant (invariant v a') $ pure b
@@ -157,11 +163,17 @@ modifyMVar v io = do
157
163
pure (a' , (a', b))
158
164
159
165
-- | 'modifyMVarMasked_' is defined in terms of 'modifyMVarMasked'.
160
- modifyMVarMasked_ :: MonadMVar m => StrictMVar m a -> (a -> m a ) -> m ()
166
+ modifyMVarMasked_ :: (HasCallStack , MonadMVar m )
167
+ => StrictMVar m a
168
+ -> (a -> m a )
169
+ -> m ()
161
170
modifyMVarMasked_ v io = modifyMVar v io'
162
171
where io' a = (,() ) <$> io a
163
172
164
- modifyMVarMasked :: MonadMVar m => StrictMVar m a -> (a -> m (a ,b )) -> m b
173
+ modifyMVarMasked :: (HasCallStack , MonadMVar m )
174
+ => StrictMVar m a
175
+ -> (a -> m (a ,b ))
176
+ -> m b
165
177
modifyMVarMasked v io = do
166
178
(a', b) <- Lazy. modifyMVar (mvar v) io'
167
179
checkInvariant (invariant v a') $ pure b
@@ -185,4 +197,4 @@ tryReadMVar v = Lazy.tryReadMVar (mvar v)
185
197
-- error @err@ if @mErr == Just err@.
186
198
checkInvariant :: HasCallStack => Maybe String -> a -> a
187
199
checkInvariant Nothing k = k
188
- checkInvariant (Just err) _ = error $ " StrictMVar invariant violation: " ++ err
200
+ checkInvariant (Just err) _ = error $ " StrictMVar invariant violation: " ++ err
0 commit comments