module Test.Sandwich.Formatters.Print.CallStacks where import Control.Monad import GHC.Stack import Test.Sandwich.Formatters.Print.Color import Test.Sandwich.Formatters.Print.Printing printCallStack :: CallStack -> m () printCallStack CallStack cs = forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ (CallStack -> [([Char], SrcLoc)] getCallStack CallStack cs) forall {m :: * -> *}. (MonadReader (PrintFormatter, Int, Handle) m, MonadIO m) => ([Char], SrcLoc) -> m () printCallStackLine printCallStackLine :: ([Char], SrcLoc) -> m () printCallStackLine ([Char] f, (SrcLoc {Int [Char] srcLocEndCol :: SrcLoc -> Int srcLocEndLine :: SrcLoc -> Int srcLocFile :: SrcLoc -> [Char] srcLocModule :: SrcLoc -> [Char] srcLocPackage :: SrcLoc -> [Char] srcLocStartCol :: SrcLoc -> Int srcLocStartLine :: SrcLoc -> Int srcLocEndCol :: Int srcLocEndLine :: Int srcLocStartCol :: Int srcLocStartLine :: Int srcLocFile :: [Char] srcLocModule :: [Char] srcLocPackage :: [Char] ..})) = do forall {m :: * -> *}. (MonadReader (PrintFormatter, Int, Handle) m, MonadIO m) => Colour Float -> [Char] -> m () pic Colour Float logFunctionColor [Char] f forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => [Char] -> m () p [Char] " called at " forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => Colour Float -> [Char] -> m () pc Colour Float logFilenameColor [Char] srcLocFile forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => [Char] -> m () p [Char] ":" forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => Colour Float -> [Char] -> m () pc Colour Float logLineColor (forall a. Show a => a -> [Char] show Int srcLocStartLine) forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => [Char] -> m () p [Char] ":" forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => Colour Float -> [Char] -> m () pc Colour Float logChColor (forall a. Show a => a -> [Char] show Int srcLocStartCol) forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => [Char] -> m () p [Char] " in " forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => Colour Float -> [Char] -> m () pc Colour Float logPackageColor [Char] srcLocPackage forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => [Char] -> m () p [Char] ":" forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => Colour Float -> [Char] -> m () pc Colour Float logModuleColor [Char] srcLocModule forall {b} {m :: * -> *}. (MonadReader (PrintFormatter, b, Handle) m, MonadIO m) => [Char] -> m () p [Char] "\n" logFunctionColor :: Colour Float logFunctionColor = Colour Float solarizedMagenta logFilenameColor :: Colour Float logFilenameColor = Colour Float solarizedViolet logModuleColor :: Colour Float logModuleColor = Colour Float solarizedMagenta logPackageColor :: Colour Float logPackageColor = Colour Float solarizedGreen logLineColor :: Colour Float logLineColor = Colour Float solarizedCyan logChColor :: Colour Float logChColor = Colour Float solarizedOrange