ghc-call-stack-extras-0.1.0.1: Extra utilities for HasCallStack

Control.CallStack.Extras

Description

Currently this module only supports adding notes to call stacks, but it may offer more features later.

Synopsis

# Documentation

callStackNote :: HasCallStack => String -> (HasCallStack => a) -> a Source #

Add a note to the current call stack. This note will be included in the stack trace in case of an error. In the event that the note itself throws an exception, a placeholder will be shown instead.

### Example

Suppose we've written

f :: HasCallStack => (HasCallStack => Int -> Int -> Int) -> Int -> Int
f g x = callStackNote ("x = " ++ show x) $g 5 x quotTrace :: HasCallStack => Int -> Int -> Int quotTrace _ 0 = error "divide by zero" quotTrace x y = x quot y  calling  print$ f quotTrace 0  will print something like

Test: divide by zero
CallStack (from HasCallStack):
error, called at Test.hs:11:17 in main:Main
quotTrace, called at Test.hs:14:18 in main:Main
g, called at Test.hs:8:44 in main:Main
callStackNote (x = 0)
, called at Test.hs:8:9 in main:Main
f, called at Test.hs:14:16 in main:Main