Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ghc-safe-exceptions for 
openSUSE:Factory checked in at 2023-07-05 15:31:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-safe-exceptions (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-safe-exceptions.new.23466 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-safe-exceptions"

Wed Jul  5 15:31:33 2023 rev:7 rq:1096925 version:0.1.7.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-safe-exceptions/ghc-safe-exceptions.changes  
2023-04-04 21:23:04.798100617 +0200
+++ 
/work/SRC/openSUSE:Factory/.ghc-safe-exceptions.new.23466/ghc-safe-exceptions.changes
       2023-07-05 15:31:59.451075615 +0200
@@ -1,0 +2,8 @@
+Mon Jun 26 17:37:36 UTC 2023 - Peter Simons <psim...@suse.com>
+
+- Update safe-exceptions to version 0.1.7.4.
+  ## 0.1.7.4
+
+  * Add `HasCallStack` when `exceptions >= 0.10.6` 
[#41](https://github.com/fpco/safe-exceptions/issues/41)
+
+-------------------------------------------------------------------

Old:
----
  safe-exceptions-0.1.7.3.tar.gz

New:
----
  safe-exceptions-0.1.7.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-safe-exceptions.spec ++++++
--- /var/tmp/diff_new_pack.GozKgc/_old  2023-07-05 15:32:00.035079079 +0200
+++ /var/tmp/diff_new_pack.GozKgc/_new  2023-07-05 15:32:00.035079079 +0200
@@ -20,7 +20,7 @@
 %global pkgver %{pkg_name}-%{version}
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        0.1.7.3
+Version:        0.1.7.4
 Release:        0
 Summary:        Safe, consistent, and easy exception handling
 License:        MIT

++++++ safe-exceptions-0.1.7.3.tar.gz -> safe-exceptions-0.1.7.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/safe-exceptions-0.1.7.3/ChangeLog.md 
new/safe-exceptions-0.1.7.4/ChangeLog.md
--- old/safe-exceptions-0.1.7.3/ChangeLog.md    2022-05-22 10:13:29.000000000 
+0200
+++ new/safe-exceptions-0.1.7.4/ChangeLog.md    2023-06-26 19:37:00.000000000 
+0200
@@ -1,5 +1,9 @@
 # ChangeLog for safe-exceptions
 
+## 0.1.7.4
+
+* Add `HasCallStack` when `exceptions >= 0.10.6` 
[#41](https://github.com/fpco/safe-exceptions/issues/41)
+
 ## 0.1.7.3
 
 * Allow transformers 0.6 
[#39](https://github.com/fpco/safe-exceptions/issues/39)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/safe-exceptions-0.1.7.3/safe-exceptions.cabal 
new/safe-exceptions-0.1.7.4/safe-exceptions.cabal
--- old/safe-exceptions-0.1.7.3/safe-exceptions.cabal   2022-05-22 
10:13:13.000000000 +0200
+++ new/safe-exceptions-0.1.7.4/safe-exceptions.cabal   2023-06-26 
19:37:00.000000000 +0200
@@ -1,5 +1,5 @@
 name:                safe-exceptions
-version:             0.1.7.3
+version:             0.1.7.4
 synopsis:            Safe, consistent, and easy exception handling
 description:         Please see README.md
 homepage:            https://github.com/fpco/safe-exceptions#readme
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/safe-exceptions-0.1.7.3/src/Control/Exception/Safe.hs 
new/safe-exceptions-0.1.7.4/src/Control/Exception/Safe.hs
--- old/safe-exceptions-0.1.7.3/src/Control/Exception/Safe.hs   2022-05-22 
10:12:59.000000000 +0200
+++ new/safe-exceptions-0.1.7.4/src/Control/Exception/Safe.hs   2023-06-26 
19:37:00.000000000 +0200
@@ -102,23 +102,66 @@
 import GHC.Stack.Types (HasCallStack, CallStack, getCallStack)
 #endif
 
+#if MIN_VERSION_base(4,9,0) && MIN_VERSION_exceptions(0,10,6)
+import GHC.Stack (withFrozenCallStack)
+#endif
+
+-- The exceptions package that safe-exceptions is based on added HasCallStack
+-- to many of its functions in 0.10.6:
+--
+-- https://github.com/ekmett/exceptions/pull/90
+-- https://github.com/ekmett/exceptions/pull/92
+--
+-- We make the same change here. The following comment has been lifted
+-- verbatim from exceptions:
+--
+-- We use the following bit of CPP to enable the use of HasCallStack
+-- constraints without breaking the build for pre-8.0 GHCs, which did not
+-- provide GHC.Stack. We are careful to always write constraints like this:
+--
+--   HAS_CALL_STACK => MonadThrow m => ...
+--
+-- Instead of like this:
+--
+--   (HAS_CALL_STACK, MonadThrow e) => ...
+--
+-- The latter is equivalent to (() :: Constraint, MonadThrow e) => ..., which
+-- requires ConstraintKinds. More importantly, it's slightly less efficient,
+-- since it requires passing an empty constraint tuple dictionary around.
+--
+-- Note that we do /not/ depend on the call-stack compatibility library to
+-- provide HasCallStack on older GHCs. We tried this at one point, but we
+-- discovered that downstream libraries failed to build because combining
+-- call-stack with GeneralizedNewtypeDeriving on older GHCs would require the
+-- use of ConstraintKinds/FlexibleContexts, which downstream libraries did not
+-- enable. (See #91.) The CPP approach that we use now, while somewhat clunky,
+-- avoids these issues by not requiring any additional language extensions for
+-- downstream users.
+#if MIN_VERSION_base(4,9,0) && MIN_VERSION_exceptions(0,10,6)
+# define HAS_CALL_STACK HasCallStack
+#else
+# define HAS_CALL_STACK ()
+withFrozenCallStack :: a -> a
+withFrozenCallStack a = a
+#endif
+
 -- | Synchronously throw the given exception
 --
 -- @since 0.1.0.0
-throw :: (C.MonadThrow m, Exception e) => e -> m a
+throw :: HAS_CALL_STACK => (C.MonadThrow m, Exception e) => e -> m a
 throw = C.throwM . toSyncException
 
 -- | Synonym for 'throw'
 --
 -- @since 0.1.0.0
-throwIO :: (C.MonadThrow m, Exception e) => e -> m a
-throwIO = throw
+throwIO :: HAS_CALL_STACK => (C.MonadThrow m, Exception e) => e -> m a
+throwIO = withFrozenCallStack throw
 
 -- | Synonym for 'throw'
 --
 -- @since 0.1.0.0
-throwM :: (C.MonadThrow m, Exception e) => e -> m a
-throwM = throw
+throwM :: HAS_CALL_STACK => (C.MonadThrow m, Exception e) => e -> m a
+throwM = withFrozenCallStack throw
 
 -- | A convenience function for throwing a user error. This is useful
 -- for cases where it would be too high a burden to define your own
@@ -193,14 +236,14 @@
 -- see <https://github.com/fpco/safe-exceptions#quickstart>
 --
 -- @since 0.1.0.0
-impureThrow :: Exception e => e -> a
+impureThrow :: HAS_CALL_STACK => Exception e => e -> a
 impureThrow = E.throw . toSyncException
 
 -- | Same as upstream 'C.catch', but will not catch asynchronous
 -- exceptions
 --
 -- @since 0.1.0.0
-catch :: (C.MonadCatch m, Exception e) => m a -> (e -> m a) -> m a
+catch :: HAS_CALL_STACK => (C.MonadCatch m, Exception e) => m a -> (e -> m a) 
-> m a
 catch f g = f `C.catch` \e ->
     if isSyncException e
         then g e
@@ -211,22 +254,22 @@
 -- | 'C.catch' specialized to only catching 'E.IOException's
 --
 -- @since 0.1.3.0
-catchIO :: C.MonadCatch m => m a -> (E.IOException -> m a) -> m a
-catchIO = C.catch
+catchIO :: HAS_CALL_STACK => C.MonadCatch m => m a -> (E.IOException -> m a) 
-> m a
+catchIO = withFrozenCallStack C.catch
 
 -- | 'catch' specialized to catch all synchronous exception
 --
 -- @since 0.1.0.0
-catchAny :: C.MonadCatch m => m a -> (SomeException -> m a) -> m a
-catchAny = catch
+catchAny :: HAS_CALL_STACK => C.MonadCatch m => m a -> (SomeException -> m a) 
-> m a
+catchAny = withFrozenCallStack catch
 
 -- | Same as 'catch', but fully force evaluation of the result value
 -- to find all impure exceptions.
 --
 -- @since 0.1.1.0
-catchDeep :: (C.MonadCatch m, MonadIO m, Exception e, NFData a)
+catchDeep :: HAS_CALL_STACK => (C.MonadCatch m, MonadIO m, Exception e, NFData 
a)
           => m a -> (e -> m a) -> m a
-catchDeep = catch . evaluateDeep
+catchDeep = withFrozenCallStack catch . evaluateDeep
 
 -- | Internal helper function
 evaluateDeep :: (MonadIO m, NFData a) => m a -> m a
@@ -237,8 +280,8 @@
 -- | 'catchDeep' specialized to catch all synchronous exception
 --
 -- @since 0.1.1.0
-catchAnyDeep :: (C.MonadCatch m, MonadIO m, NFData a) => m a -> (SomeException 
-> m a) -> m a
-catchAnyDeep = catchDeep
+catchAnyDeep :: HAS_CALL_STACK => (C.MonadCatch m, MonadIO m, NFData a) => m a 
-> (SomeException -> m a) -> m a
+catchAnyDeep = withFrozenCallStack catchDeep
 
 -- | 'catch' without async exception safety
 --
@@ -247,7 +290,7 @@
 -- <https://github.com/fpco/safe-exceptions#quickstart>
 --
 -- @since 0.1.0.0
-catchAsync :: (C.MonadCatch m, Exception e) => m a -> (e -> m a) -> m a
+catchAsync :: HAS_CALL_STACK => (C.MonadCatch m, Exception e) => m a -> (e -> 
m a) -> m a
 catchAsync = C.catch
 
 -- | 'catchJust' is like 'catch' but it takes an extra argument which
@@ -255,39 +298,39 @@
 -- exceptions we're interested in.
 --
 -- @since 0.1.4.0
-catchJust :: (C.MonadCatch m, Exception e) => (e -> Maybe b) -> m a -> (b -> m 
a) -> m a
-catchJust f a b = a `catch` \e -> maybe (throwM e) b $ f e
+catchJust :: HAS_CALL_STACK => (C.MonadCatch m, Exception e) => (e -> Maybe b) 
-> m a -> (b -> m a) -> m a
+catchJust f a b = withFrozenCallStack catch a (\e -> maybe (throwM e) b $ f e)
 
 -- | Flipped version of 'catch'
 --
 -- @since 0.1.0.0
-handle :: (C.MonadCatch m, Exception e) => (e -> m a) -> m a -> m a
-handle = flip catch
+handle :: HAS_CALL_STACK => (C.MonadCatch m, Exception e) => (e -> m a) -> m a 
-> m a
+handle = flip (withFrozenCallStack catch)
 
 -- | 'C.handle' specialized to only catching 'E.IOException's
 --
 -- @since 0.1.3.0
-handleIO :: C.MonadCatch m => (E.IOException -> m a) -> m a -> m a
-handleIO = C.handle
+handleIO :: HAS_CALL_STACK => C.MonadCatch m => (E.IOException -> m a) -> m a 
-> m a
+handleIO = withFrozenCallStack C.handle
 
 
 -- | Flipped version of 'catchAny'
 --
 -- @since 0.1.0.0
-handleAny :: C.MonadCatch m => (SomeException -> m a) -> m a -> m a
-handleAny = flip catchAny
+handleAny :: HAS_CALL_STACK => C.MonadCatch m => (SomeException -> m a) -> m a 
-> m a
+handleAny = flip (withFrozenCallStack catchAny)
 
 -- | Flipped version of 'catchDeep'
 --
 -- @since 0.1.1.0
-handleDeep :: (C.MonadCatch m, Exception e, MonadIO m, NFData a) => (e -> m a) 
-> m a -> m a
-handleDeep = flip catchDeep
+handleDeep :: HAS_CALL_STACK => (C.MonadCatch m, Exception e, MonadIO m, 
NFData a) => (e -> m a) -> m a -> m a
+handleDeep = flip (withFrozenCallStack catchDeep)
 
 -- | Flipped version of 'catchAnyDeep'
 --
 -- @since 0.1.1.0
-handleAnyDeep :: (C.MonadCatch m, MonadIO m, NFData a) => (SomeException -> m 
a) -> m a -> m a
-handleAnyDeep = flip catchAnyDeep
+handleAnyDeep :: HAS_CALL_STACK => (C.MonadCatch m, MonadIO m, NFData a) => 
(SomeException -> m a) -> m a -> m a
+handleAnyDeep = flip (withFrozenCallStack catchAnyDeep)
 
 -- | Flipped version of 'catchAsync'
 --
@@ -296,46 +339,46 @@
 -- <https://github.com/fpco/safe-exceptions#quickstart>
 --
 -- @since 0.1.0.0
-handleAsync :: (C.MonadCatch m, Exception e) => (e -> m a) -> m a -> m a
+handleAsync :: HAS_CALL_STACK => (C.MonadCatch m, Exception e) => (e -> m a) 
-> m a -> m a
 handleAsync = C.handle
 
 -- | Flipped 'catchJust'.
 --
 -- @since 0.1.4.0
-handleJust :: (C.MonadCatch m, Exception e) => (e -> Maybe b) -> (b -> m a) -> 
m a -> m a
-handleJust f = flip (catchJust f)
+handleJust :: HAS_CALL_STACK => (C.MonadCatch m, Exception e) => (e -> Maybe 
b) -> (b -> m a) -> m a -> m a
+handleJust f = flip (withFrozenCallStack catchJust f)
 
 -- | Same as upstream 'C.try', but will not catch asynchronous
 -- exceptions
 --
 -- @since 0.1.0.0
-try :: (C.MonadCatch m, E.Exception e) => m a -> m (Either e a)
-try f = catch (liftM Right f) (return . Left)
+try :: HAS_CALL_STACK => (C.MonadCatch m, E.Exception e) => m a -> m (Either e 
a)
+try f = withFrozenCallStack catch (liftM Right f) (return . Left)
 
 -- | 'C.try' specialized to only catching 'E.IOException's
 --
 -- @since 0.1.3.0
-tryIO :: C.MonadCatch m => m a -> m (Either E.IOException a)
-tryIO = C.try
+tryIO :: HAS_CALL_STACK => C.MonadCatch m => m a -> m (Either E.IOException a)
+tryIO = withFrozenCallStack C.try
 
 -- | 'try' specialized to catch all synchronous exceptions
 --
 -- @since 0.1.0.0
-tryAny :: C.MonadCatch m => m a -> m (Either SomeException a)
-tryAny = try
+tryAny :: HAS_CALL_STACK => C.MonadCatch m => m a -> m (Either SomeException a)
+tryAny = withFrozenCallStack try
 
 -- | Same as 'try', but fully force evaluation of the result value
 -- to find all impure exceptions.
 --
 -- @since 0.1.1.0
-tryDeep :: (C.MonadCatch m, MonadIO m, E.Exception e, NFData a) => m a -> m 
(Either e a)
-tryDeep f = catch (liftM Right (evaluateDeep f)) (return . Left)
+tryDeep :: HAS_CALL_STACK => (C.MonadCatch m, MonadIO m, E.Exception e, NFData 
a) => m a -> m (Either e a)
+tryDeep f = withFrozenCallStack catch (liftM Right (evaluateDeep f)) (return . 
Left)
 
 -- | 'tryDeep' specialized to catch all synchronous exceptions
 --
 -- @since 0.1.1.0
-tryAnyDeep :: (C.MonadCatch m, MonadIO m, NFData a) => m a -> m (Either 
SomeException a)
-tryAnyDeep = tryDeep
+tryAnyDeep :: HAS_CALL_STACK => (C.MonadCatch m, MonadIO m, NFData a) => m a 
-> m (Either SomeException a)
+tryAnyDeep = withFrozenCallStack tryDeep
 
 -- | 'try' without async exception safety
 --
@@ -344,27 +387,56 @@
 -- <https://github.com/fpco/safe-exceptions#quickstart>
 --
 -- @since 0.1.0.0
-tryAsync :: (C.MonadCatch m, E.Exception e) => m a -> m (Either e a)
+tryAsync :: HAS_CALL_STACK => (C.MonadCatch m, E.Exception e) => m a -> m 
(Either e a)
 tryAsync = C.try
 
 -- | A variant of 'try' that takes an exception predicate to select
 -- which exceptions are caught.
 --
 -- @since 0.1.4.0
-tryJust :: (C.MonadCatch m, Exception e) => (e -> Maybe b) -> m a -> m (Either 
b a)
-tryJust f a = catch (Right `liftM` a) (\e -> maybe (throwM e) (return . Left) 
(f e))
+tryJust :: HAS_CALL_STACK => (C.MonadCatch m, Exception e) => (e -> Maybe b) 
-> m a -> m (Either b a)
+tryJust f a = withFrozenCallStack catch (Right `liftM` a) (\e -> maybe (throwM 
e) (return . Left) (f e))
 
 -- | Async safe version of 'E.onException'
 --
 -- @since 0.1.0.0
-onException :: C.MonadMask m => m a -> m b -> m a
-onException thing after = withException thing (\(_ :: SomeException) -> after)
+onException :: HAS_CALL_STACK => C.MonadMask m => m a -> m b -> m a
+onException thing after = withFrozenCallStack withException thing (\(_ :: 
SomeException) -> after)
+
+-- Note: [withFrozenCallStack impredicativity]
+--
+-- We do not currently use 'withFrozenCallStack' in 'withException' or the 
similar
+-- 'finally' due to impredicativity. That is, we would like to be consistent
+-- with other functions and apply 'withFrozenCallStack' to the _handler only_ 
i.e.
+--
+--     withException thing after = withFrozenCallStack C.uninterruptibleMask $ 
\restore ...
+--
+-- Alas, that fails due to impredicativity:
+--
+--     • Couldn't match type: m a -> m a
+--                      with: forall a1. m a1 -> m a1
+--       Expected: (forall a1. m a1 -> m a1) -> m a
+--         Actual: (m a -> m a) -> m a
+--
+-- Armed with -XImpredicativeTypes, we can define:
+--
+--     uninterruptibleMaskFrozen :: forall m b. C.MonadMask m => ((forall a. m 
a -> m a) -> m b) -> m b
+--     uninterruptibleMaskFrozen = withFrozenCallStack C.uninterruptibleMask
+--
+-- and then
+--
+--     withException thing after = uninterruptibleMaskFrozen $ \restore -> do 
...
+--
+-- But we cannot rely on -XImpredicativeTypes until GHC 9.2 is the oldest
+-- supported release, and even then it is worth asking if the benefit
+-- (consistency, omit handler from CallStack) is worth the cost (powerful,
+-- relatively exotic extension).
 
 -- | Like 'onException', but provides the handler the thrown
 -- exception.
 --
 -- @since 0.1.0.0
-withException :: (C.MonadMask m, E.Exception e) => m a -> (e -> m b) -> m a
+withException :: HAS_CALL_STACK => (C.MonadMask m, E.Exception e) => m a -> (e 
-> m b) -> m a
 withException thing after = C.uninterruptibleMask $ \restore -> do
     fmap fst $ C.generalBracket (pure ()) cAfter (const $ restore thing)
   where
@@ -376,20 +448,22 @@
 -- | Async safe version of 'E.bracket'
 --
 -- @since 0.1.0.0
-bracket :: forall m a b c. C.MonadMask m
+bracket :: forall m a b c. HAS_CALL_STACK => C.MonadMask m
         => m a -> (a -> m b) -> (a -> m c) -> m c
-bracket before after = bracketWithError before (const after)
+bracket before after = withFrozenCallStack bracketWithError before (const 
after)
 
 -- | Async safe version of 'E.bracket_'
 --
 -- @since 0.1.0.0
-bracket_ :: C.MonadMask m => m a -> m b -> m c -> m c
-bracket_ before after thing = bracket before (const after) (const thing)
+bracket_ :: HAS_CALL_STACK => C.MonadMask m => m a -> m b -> m c -> m c
+bracket_ before after thing = withFrozenCallStack bracket before (const after) 
(const thing)
+
+-- See Note [withFrozenCallStack impredicativity]
 
 -- | Async safe version of 'E.finally'
 --
 -- @since 0.1.0.0
-finally :: C.MonadMask m => m a -> m b -> m a
+finally :: HAS_CALL_STACK => C.MonadMask m => m a -> m b -> m a
 finally thing after = C.uninterruptibleMask $ \restore -> do
     fmap fst $ C.generalBracket (pure ()) cAfter (const $ restore thing)
   where
@@ -401,9 +475,9 @@
 -- | Async safe version of 'E.bracketOnError'
 --
 -- @since 0.1.0.0
-bracketOnError :: forall m a b c. C.MonadMask m
+bracketOnError :: forall m a b c. HAS_CALL_STACK => C.MonadMask m
                => m a -> (a -> m b) -> (a -> m c) -> m c
-bracketOnError before after thing = fmap fst $ C.generalBracket before cAfter 
thing
+bracketOnError before after thing = fmap fst $ withFrozenCallStack 
C.generalBracket before cAfter thing
   where
     -- ignore the exception from after, see bracket for explanation
     cAfter x (C.ExitCaseException se) =
@@ -415,16 +489,16 @@
 -- computation is not required.
 --
 -- @since 0.1.0.0
-bracketOnError_ :: C.MonadMask m => m a -> m b -> m c -> m c
-bracketOnError_ before after thing = bracketOnError before (const after) 
(const thing)
+bracketOnError_ :: HAS_CALL_STACK => C.MonadMask m => m a -> m b -> m c -> m c
+bracketOnError_ before after thing = withFrozenCallStack bracketOnError before 
(const after) (const thing)
 
 -- | Async safe version of 'E.bracket' with access to the exception in the
 -- cleanup action.
 --
 -- @since 0.1.7.0
-bracketWithError :: forall m a b c. C.MonadMask m
+bracketWithError :: forall m a b c. HAS_CALL_STACK => C.MonadMask m
         => m a -> (Maybe SomeException -> a -> m b) -> (a -> m c) -> m c
-bracketWithError before after thing = fmap fst $ C.generalBracket before 
cAfter thing
+bracketWithError before after thing = fmap fst $ withFrozenCallStack 
C.generalBracket before cAfter thing
   where
     cAfter x (C.ExitCaseException se) =
         C.uninterruptibleMask_ $ ignoreExceptions $ after (Just se) x
@@ -534,15 +608,15 @@
 -- exceptions
 --
 -- @since 0.1.2.0
-catches :: (C.MonadCatch m, C.MonadThrow m) => m a -> [Handler m a] -> m a
-catches io handlers = io `catch` catchesHandler handlers
+catches :: HAS_CALL_STACK => (C.MonadCatch m, C.MonadThrow m) => m a -> 
[Handler m a] -> m a
+catches io handlers = withFrozenCallStack catch io (catchesHandler handlers)
 
 -- | Same as 'catches', but fully force evaluation of the result value
 -- to find all impure exceptions.
 --
 -- @since 0.1.2.0
-catchesDeep :: (C.MonadCatch m, C.MonadThrow m, MonadIO m, NFData a) => m a -> 
[Handler m a] -> m a
-catchesDeep io handlers = evaluateDeep io `catch` catchesHandler handlers
+catchesDeep :: HAS_CALL_STACK => (C.MonadCatch m, C.MonadThrow m, MonadIO m, 
NFData a) => m a -> [Handler m a] -> m a
+catchesDeep io handlers = withFrozenCallStack catch (evaluateDeep io) 
(catchesHandler handlers)
 
 -- | 'catches' without async exception safety
 --
@@ -551,10 +625,10 @@
 -- <https://github.com/fpco/safe-exceptions#quickstart>
 --
 -- @since 0.1.2.0
-catchesAsync :: (C.MonadCatch m, C.MonadThrow m) => m a -> [Handler m a] -> m a
+catchesAsync :: HAS_CALL_STACK => (C.MonadCatch m, C.MonadThrow m) => m a -> 
[Handler m a] -> m a
 catchesAsync io handlers = io `catchAsync` catchesHandler handlers
 
-catchesHandler :: (C.MonadThrow m) => [Handler m a] -> SomeException -> m a
+catchesHandler :: HAS_CALL_STACK => (C.MonadThrow m) => [Handler m a] -> 
SomeException -> m a
 catchesHandler handlers e = foldr tryHandler (C.throwM e) handlers
     where tryHandler (Handler handler) res
               = case fromException e of

Reply via email to