content: {-# LANGUAGE CPP #-}
  
  -- |This module contains all the code that depends on a specific
  -- version of GHC, and should be the only one requiring CPP
  module Language.Haskell.Refact.Utils.GhcVersionSpecific
    (
      prettyprint
    , prettyprint2
    , ppType
    , setGhcContext
    , showGhcQual
    )
    where
  
  import qualified DynFlags      as GHC
  import qualified GHC           as GHC
  import qualified Outputable    as GHC
  
  
  
  -- ---------------------------------------------------------------------
  
  
  prettyprint :: (GHC.Outputable a) => a -> String
  #if __GLASGOW_HASKELL__ > 706
  prettyprint x = GHC.renderWithStyle GHC.unsafeGlobalDynFlags (GHC.ppr x) (GHC.mkUserStyle GHC.neverQualify GHC.AllTheWay)
  #elif __GLASGOW_HASKELL__ > 704
  prettyprint x = GHC.renderWithStyle GHC.tracingDynFlags (GHC.ppr x) (GHC.mkUserStyle GHC.neverQualify GHC.AllTheWay)
  #else
  prettyprint x = GHC.renderWithStyle                     (GHC.ppr x) (GHC.mkUserStyle GHC.neverQualify GHC.AllTheWay)
  #endif
  
  -- ---------------------------------------------------------------------
  
  prettyprint2 :: (GHC.Outputable a) => a -> String
  #if __GLASGOW_HASKELL__ > 706
  prettyprint2 x = GHC.renderWithStyle GHC.unsafeGlobalDynFlags (GHC.ppr x) (GHC.cmdlineParserStyle)
  #elif __GLASGOW_HASKELL__ > 704
  prettyprint2 x = GHC.renderWithStyle GHC.tracingDynFlags (GHC.ppr x) (GHC.cmdlineParserStyle)
  #else
  prettyprint2 x = GHC.renderWithStyle                     (GHC.ppr x) (GHC.cmdlineParserStyle)
  #endif
  
  -- ---------------------------------------------------------------------
  
  ppType :: GHC.Type -> String
  #if __GLASGOW_HASKELL__ > 706
  ppType x = GHC.renderWithStyle GHC.unsafeGlobalDynFlags (GHC.pprParendType x) (GHC.mkUserStyle GHC.neverQualify GHC.AllTheWay)
  #elif __GLASGOW_HASKELL__ > 704
  ppType x = GHC.renderWithStyle GHC.tracingDynFlags (GHC.pprParendType x) (GHC.mkUserStyle GHC.neverQualify GHC.AllTheWay)
  #else
  ppType x = GHC.renderWithStyle                     (GHC.pprParendType x) (GHC.mkUserStyle GHC.neverQualify GHC.AllTheWay)
  #endif
  
  -- ---------------------------------------------------------------------
  
  setGhcContext :: GHC.GhcMonad m => GHC.ModSummary -> m ()
  #if __GLASGOW_HASKELL__ > 704
  setGhcContext modSum = GHC.setContext [GHC.IIModule (GHC.moduleName $ GHC.ms_mod modSum)]
  #else
  setGhcContext modSum = GHC.setContext [GHC.IIModule (                 GHC.ms_mod modSum)]
  #endif
  
  -- ---------------------------------------------------------------------
  
  showGhcQual :: (GHC.Outputable a) => a -> String
  showGhcQual x = GHC.showSDocForUser GHC.unsafeGlobalDynFlags GHC.alwaysQualify $ GHC.ppr x
  
  