clash-lib-1.4.0: src/Clash/Debug.hs
{-# LANGUAGE CPP #-}
module Clash.Debug
( debugIsOn
, traceIf
, traceWith
, traceShowWith
, module Debug.Trace
) where
import Debug.Trace
debugIsOn :: Bool
#if defined(DEBUG)
debugIsOn = True
#else
debugIsOn = False
#endif
-- | Performs trace when first argument evaluates to 'True'
traceIf :: Bool -> String -> a -> a
traceIf True msg = trace msg
traceIf False _ = id
{-# INLINE traceIf #-}
traceWith :: (a -> String) -> a -> a
traceWith f a = trace (f a) a
traceShowWith :: Show b => (a -> b) -> a -> a
traceShowWith f a = trace (show (f a)) a