{-# LANGUAGE CPP #-} module Output ( printResults ) where import System.IO (stdout) import DefCounts.Output import GHC.Api #if MIN_VERSION_ghc(9,2,0) (DynFlags, initSDocContext) #else (DynFlags) #endif import GHC.Output import HieFile (Counters) import MatchSigs.Output import UseCounts.Output printResults :: DynFlags -> Counters -> IO () printResults :: DynFlags -> Counters -> IO () printResults DynFlags dynFlags (DefCounter defCounter, UsageCounter usageCounter, SigMap sigDupeMap, Sum Int totalLines) = do let output :: SDoc output = [SDoc] -> SDoc vcat [ SDoc separator , String -> SDoc text String "" , SDoc -> SDoc keyword forall a b. (a -> b) -> a -> b $ String -> SDoc text String "Duplicate Type Signatures" , String -> SDoc text String "" , SigMap -> SDoc sigDuplicateOutput SigMap sigDupeMap , String -> SDoc text String "" , SDoc separator , String -> SDoc text String "" , SDoc -> SDoc keyword forall a b. (a -> b) -> a -> b $ String -> SDoc text String "Usage Totals" , String -> SDoc text String "" , UsageCounter -> SDoc usageOutput UsageCounter usageCounter , String -> SDoc text String "" , SDoc separator , String -> SDoc text String "" , SDoc -> SDoc keyword forall a b. (a -> b) -> a -> b $ String -> SDoc text String "Definition Counts" , String -> SDoc text String "" , DefCounter -> Sum Int -> SDoc defCountOutput DefCounter defCounter Sum Int totalLines , String -> SDoc text String "" , SDoc separator ] separator :: SDoc separator = PprColour -> SDoc -> SDoc coloured PprColour colGreenFg forall a b. (a -> b) -> a -> b $ String -> SDoc text String "********************************************************************************" DynFlags -> SDoc -> IO () outputSDoc DynFlags dynFlags SDoc output outputSDoc :: DynFlags -> SDoc -> IO () outputSDoc :: DynFlags -> SDoc -> IO () outputSDoc DynFlags dynFlags SDoc sDoc = do #if MIN_VERSION_ghc(9,2,0) let pprStyle :: PprStyle pprStyle = Bool -> PprStyle -> PprStyle setStyleColoured Bool True PprStyle defaultUserStyle sDocCtx :: SDocContext sDocCtx = DynFlags -> PprStyle -> SDocContext initSDocContext DynFlags dynFlags PprStyle pprStyle SDocContext -> Mode -> Handle -> SDoc -> IO () printSDocLn SDocContext sDocCtx (Bool -> Mode PageMode Bool True) Handle stdout SDoc sDoc #elif MIN_VERSION_ghc(9,0,0) let pprStyle = setStyleColoured True defaultUserStyle sDocCtx = initSDocContext dynFlags pprStyle printSDocLn sDocCtx PageMode stdout sDoc #else let pprStyle = setStyleColoured True $ defaultUserStyle dynFlags printSDocLn PageMode dynFlags stdout pprStyle sDoc #endif