hint-0.2.4: src/Hint/Compat.hs
module Hint.Compat
where
import qualified GHC
import qualified Pretty
import qualified Outputable
#if __GLASGOW_HASKELL__ >= 608
import qualified PprTyThing
#endif
-- Kinds became a synonym for Type in GHC 6.8. We define this wrapper
-- to be able to define a FromGhcRep instance for both versions
newtype Kind = Kind GHC.Kind
#if __GLASGOW_HASKELL__ >= 608
newSession :: FilePath -> IO GHC.Session
newSession ghc_root =
do s <- GHC.newSession (Just ghc_root)
dflags <- GHC.getSessionDynFlags s
GHC.setSessionDynFlags s dflags{GHC.ghcMode = GHC.CompManager,
GHC.hscTarget = GHC.HscInterpreted,
GHC.ghcLink = GHC.LinkInMemory}
return s
pprType :: GHC.Type -> (Outputable.PprStyle -> Pretty.Doc)
pprType = PprTyThing.pprTypeForUser False -- False means drop explicit foralls
pprKind :: GHC.Kind -> (Outputable.PprStyle -> Pretty.Doc)
pprKind = pprType
#elif __GLASGOW_HASKELL__ >= 606
newSession :: FilePath -> IO GHC.Session
newSession ghc_root =
do s <- GHC.newSession GHC.Interactive (Just ghc_root)
dflags <- GHC.getSessionDynFlags s
GHC.setSessionDynFlags s dflags{GHC.hscTarget = GHC.HscInterpreted}
return s
pprType :: GHC.Type -> (Outputable.PprStyle -> Pretty.Doc)
pprType = Outputable.ppr . GHC.dropForAlls
pprKind :: GHC.Kind -> (Outputable.PprStyle -> Pretty.Doc)
pprKind = Outputable.ppr
#endif