Avoid backtraces on expected failures when built with ghc 8; only use backtraces for unexpected errors.
ghc 8 added backtraces on uncaught errors. This is great, but git-annex was using error in many places for a error message targeted at the user, in some known problem case. A backtrace only confuses such a message, so omit it. Notably, commands like git annex drop that failed due to eg, numcopies, used to use error, so had a backtrace. This commit was sponsored by Ethan Aubin.
This commit is contained in:
parent
69915c6c9b
commit
0a4479b8ec
116 changed files with 287 additions and 270 deletions
|
@ -1,6 +1,6 @@
|
|||
{- Simple IO exception handling (and some more)
|
||||
-
|
||||
- Copyright 2011-2015 Joey Hess <id@joeyh.name>
|
||||
- Copyright 2011-2016 Joey Hess <id@joeyh.name>
|
||||
-
|
||||
- License: BSD-2-clause
|
||||
-}
|
||||
|
@ -10,6 +10,7 @@
|
|||
|
||||
module Utility.Exception (
|
||||
module X,
|
||||
giveup,
|
||||
catchBoolIO,
|
||||
catchMaybeIO,
|
||||
catchDefaultIO,
|
||||
|
@ -40,6 +41,17 @@ import GHC.IO.Exception (IOErrorType(..))
|
|||
|
||||
import Utility.Data
|
||||
|
||||
{- Like error, this throws an exception. Unlike error, if this exception
|
||||
- is not caught, it won't generate a backtrace. So use this for situations
|
||||
- where there's a problem that the user is excpected to see in some
|
||||
- circumstances. -}
|
||||
giveup :: [Char] -> a
|
||||
#if MIN_VERSION_base(4,9,0)
|
||||
giveup = errorWithoutStackTrace
|
||||
#else
|
||||
giveup = error
|
||||
#endif
|
||||
|
||||
{- Catches IO errors and returns a Bool -}
|
||||
catchBoolIO :: MonadCatch m => m Bool -> m Bool
|
||||
catchBoolIO = catchDefaultIO False
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue