lib: debug utils cleanup
This commit is contained in:
parent
b262be7838
commit
2f4dde3699
@ -530,7 +530,7 @@ checkBalanceAssertion (errs,startbal) ps
|
||||
finalfullbal = sum $ [startbal] ++ map pamount (dbg2 "ps" ps)
|
||||
finalsinglebal = filterMixedAmount (\a -> acommodity a == assertedcomm) finalfullbal
|
||||
actualbal = finalsinglebal -- just check the single-commodity balance, like Ledger; maybe add ==FULLBAL later
|
||||
iswrong = dbgtrace 2 debugmsg $
|
||||
iswrong = dbg2 debugmsg $
|
||||
not (isReallyZeroMixedAmount (actualbal - assertedbal))
|
||||
-- bal' /= assertedbal -- MixedAmount's Eq instance currently gets confused by different precisions
|
||||
where
|
||||
|
||||
@ -40,23 +40,9 @@ ppShow = show
|
||||
pprint :: Show a => a -> IO ()
|
||||
pprint = putStrLn . ppShow
|
||||
|
||||
|
||||
-- | Trace (print on stdout at runtime) a showable value.
|
||||
-- (for easily tracing in the middle of a complex expression)
|
||||
strace :: Show a => a -> a
|
||||
strace a = trace (show a) a
|
||||
|
||||
-- | Labelled trace - like strace, with a label prepended.
|
||||
ltrace :: Show a => String -> a -> a
|
||||
ltrace l a = trace (l ++ ": " ++ show a) a
|
||||
|
||||
-- | Monadic trace - like strace, but works as a standalone line in a monad.
|
||||
mtrace :: (Monad m, Show a) => a -> m a
|
||||
mtrace a = strace a `seq` return a
|
||||
|
||||
-- | Custom trace - like strace, with a custom show function.
|
||||
-- | Trace (print to stderr) a showable value using a custom show function.
|
||||
traceWith :: (a -> String) -> a -> a
|
||||
traceWith f e = trace (f e) e
|
||||
traceWith f a = trace (f a) a
|
||||
|
||||
-- | Parsec trace - show the current parsec position and next input,
|
||||
-- and the provided label if it's non-null.
|
||||
@ -164,11 +150,9 @@ dbg9IO = tracePrettyAtIO 9
|
||||
tracePrettyAt :: Show a => Int -> String -> a -> a
|
||||
tracePrettyAt lvl = dbgppshow lvl
|
||||
|
||||
tracePrettyAtIO :: (MonadIO m, Show a) => Int -> String -> a -> m ()
|
||||
tracePrettyAtIO lvl lbl x = liftIO $ tracePrettyAt lvl lbl x `seq` return ()
|
||||
|
||||
-- XXX
|
||||
-- Could not deduce (a ~ ())
|
||||
-- tracePrettyAtM :: (Monad m, Show a) => Int -> String -> a -> m a
|
||||
-- tracePrettyAtM lvl lbl x = tracePrettyAt lvl lbl x `seq` return x
|
||||
-- XXX Could not deduce (a ~ ())
|
||||
-- from the context (Show a)
|
||||
-- bound by the type signature for
|
||||
-- dbgM :: Show a => String -> a -> IO ()
|
||||
@ -178,25 +162,25 @@ tracePrettyAtIO lvl lbl x = liftIO $ tracePrettyAt lvl lbl x `seq` return ()
|
||||
-- at hledger/Hledger/Cli/Main.hs:200:13
|
||||
-- Expected type: String -> a -> IO ()
|
||||
-- Actual type: String -> a -> IO a
|
||||
--
|
||||
-- tracePrettyAtM :: (Monad m, Show a) => Int -> String -> a -> m a
|
||||
-- tracePrettyAtM lvl lbl x = tracePrettyAt lvl lbl x `seq` return x
|
||||
|
||||
tracePrettyAtIO :: (MonadIO m, Show a) => Int -> String -> a -> m ()
|
||||
tracePrettyAtIO lvl lbl x = liftIO $ tracePrettyAt lvl lbl x `seq` return ()
|
||||
|
||||
-- | print this string to the console before evaluating the expression,
|
||||
-- if the global debug level is at or above the specified level. Uses unsafePerformIO.
|
||||
dbgtrace :: Int -> String -> a -> a
|
||||
dbgtrace level
|
||||
| debugLevel >= level = trace
|
||||
| otherwise = flip const
|
||||
-- dbgtrace :: Int -> String -> a -> a
|
||||
-- dbgtrace level
|
||||
-- | debugLevel >= level = trace
|
||||
-- | otherwise = flip const
|
||||
|
||||
-- | Print a showable value to the console, with a message, if the
|
||||
-- debug level is at or above the specified level (uses
|
||||
-- unsafePerformIO).
|
||||
-- Values are displayed with show, all on one line, which is hard to read.
|
||||
dbgshow :: Show a => Int -> String -> a -> a
|
||||
dbgshow level
|
||||
| debugLevel >= level = ltrace
|
||||
| otherwise = flip const
|
||||
-- dbgshow :: Show a => Int -> String -> a -> a
|
||||
-- dbgshow level
|
||||
-- | debugLevel >= level = ltrace
|
||||
-- | otherwise = flip const
|
||||
|
||||
-- | Print a showable value to the console, with a message, if the
|
||||
-- debug level is at or above the specified level (uses
|
||||
@ -226,7 +210,6 @@ dbgppshow level
|
||||
-- return a
|
||||
-- | otherwise = a
|
||||
|
||||
|
||||
-- | Like dbg, then exit the program. Uses unsafePerformIO.
|
||||
dbgExit :: Show a => String -> a -> a
|
||||
dbgExit msg = const (unsafePerformIO exitFailure) . dbg msg
|
||||
@ -238,4 +221,11 @@ dbgExit msg = const (unsafePerformIO exitFailure) . dbg msg
|
||||
pdbg :: Int -> String -> TextParser m ()
|
||||
pdbg level msg = when (level <= debugLevel) $ ptrace msg
|
||||
|
||||
|
||||
-- | Like dbg, but writes the output to "debug.log" in the current directory.
|
||||
-- Uses unsafePerformIO. Can fail due to log file contention if called too quickly
|
||||
-- ("*** Exception: debug.log: openFile: resource busy (file is locked)").
|
||||
dbglog :: Show a => String -> a -> a
|
||||
dbglog label a =
|
||||
(unsafePerformIO $
|
||||
appendFile "debug.log" $ label ++ ": " ++ ppShow a ++ "\n")
|
||||
`seq` a
|
||||
|
||||
Loading…
Reference in New Issue
Block a user