content: {-# LANGUAGE CPP, NamedFieldPuns, TupleSections, LambdaCase,
     DuplicateRecordFields, RecordWildCards, TupleSections, ViewPatterns,
     TypeApplications, ScopedTypeVariables, BangPatterns #-}
  module GHC.Debugger.Utils where
  
  import GHC
  import GHC.Data.FastString
  import GHC.Driver.DynFlags as GHC
  import GHC.Driver.Ppr as GHC
  import GHC.Utils.Outputable as GHC
  
  import GHC.Debugger.Monad
  import GHC.Debugger.Interface.Messages
  
  --------------------------------------------------------------------------------
  -- * GHC Utilities
  --------------------------------------------------------------------------------
  
  -- | Convert a GHC's src span into an interface one
  realSrcSpanToSourceSpan :: RealSrcSpan -> SourceSpan
  realSrcSpanToSourceSpan ss = SourceSpan
    { file = unpackFS $ srcSpanFile ss
    , startLine = srcSpanStartLine ss
    , startCol = srcSpanStartCol ss
    , endLine = srcSpanEndLine ss
    , endCol = srcSpanEndCol ss
    }
  
  -- | Display an Outputable value as a String
  display :: Outputable a => a -> Debugger String
  display x = do
    dflags <- getDynFlags
    return $ showSDoc dflags (ppr x)
  {-# INLINE display #-}
  
  