packages feed

hs-bindgen-1.0.0.0: test/common/Test/Common/HsBindgen/Trace.hs

module Test.Common.HsBindgen.Trace (
  reportTrace
  ) where

import Text.SimplePrettyPrint (CtxDoc, (><))
import Text.SimplePrettyPrint qualified as PP

import HsBindgen.Util.Tracer

-- Seeing both, the pretty trace and the 'Show' instance greatly simplifies test
-- design and debugging.
reportTrace :: forall a l. (IsTrace l a, Show a) => a -> CtxDoc
reportTrace trace = PP.vcat $ [
      "[" >< ppTraceId >< "][pretty] " >< prettyForTrace trace
    , "[" >< ppTraceId >< "][show  ] " >< PP.show trace
    , ""
    ]
  where
    ppTraceId = PP.string (getTraceId trace).id