hsdev-0.2.5.1: Haskell development library

Safe HaskellNone
LanguageHaskell98

HsDev.Tools.Ghc.Worker

Contents

Synopsis

Workers

newtype MGhcT s m a Source #

Multi-session ghc monad

Constructors

MGhcT 

Instances

Monad m => MonadState (SessionState s) (MGhcT s m) Source # 

Methods

get :: MGhcT s m (SessionState s) #

put :: SessionState s -> MGhcT s m () #

state :: (SessionState s -> (a, SessionState s)) -> MGhcT s m a #

Monad m => MonadReader (Maybe FilePath) (MGhcT s m) Source # 

Methods

ask :: MGhcT s m (Maybe FilePath) #

local :: (Maybe FilePath -> Maybe FilePath) -> MGhcT s m a -> MGhcT s m a #

reader :: (Maybe FilePath -> a) -> MGhcT s m a #

Monad m => Monad (MGhcT s m) Source # 

Methods

(>>=) :: MGhcT s m a -> (a -> MGhcT s m b) -> MGhcT s m b #

(>>) :: MGhcT s m a -> MGhcT s m b -> MGhcT s m b #

return :: a -> MGhcT s m a #

fail :: String -> MGhcT s m a #

Functor m => Functor (MGhcT s m) Source # 

Methods

fmap :: (a -> b) -> MGhcT s m a -> MGhcT s m b #

(<$) :: a -> MGhcT s m b -> MGhcT s m a #

Monad m => Applicative (MGhcT s m) Source # 

Methods

pure :: a -> MGhcT s m a #

(<*>) :: MGhcT s m (a -> b) -> MGhcT s m a -> MGhcT s m b #

(*>) :: MGhcT s m a -> MGhcT s m b -> MGhcT s m b #

(<*) :: MGhcT s m a -> MGhcT s m b -> MGhcT s m a #

MonadIO m => MonadIO (MGhcT s m) Source # 

Methods

liftIO :: IO a -> MGhcT s m a #

MonadThrow m => MonadThrow (MGhcT s m) Source # 

Methods

throwM :: Exception e => e -> MGhcT s m a #

MonadCatch m => MonadCatch (MGhcT s m) Source # 

Methods

catch :: Exception e => MGhcT s m a -> (e -> MGhcT s m a) -> MGhcT s m a #

MonadMask m => MonadMask (MGhcT s m) Source # 

Methods

mask :: ((forall a. MGhcT s m a -> MGhcT s m a) -> MGhcT s m b) -> MGhcT s m b #

uninterruptibleMask :: ((forall a. MGhcT s m a -> MGhcT s m a) -> MGhcT s m b) -> MGhcT s m b #

ExceptionMonad m => GhcMonad (MGhcT s m) Source # 

Methods

getSession :: MGhcT s m HscEnv #

setSession :: HscEnv -> MGhcT s m () #

MonadIO m => HasDynFlags (MGhcT s m) Source # 

Methods

getDynFlags :: MGhcT s m DynFlags #

ExceptionMonad m => ExceptionMonad (MGhcT s m) Source # 

Methods

gcatch :: Exception e => MGhcT s m a -> (e -> MGhcT s m a) -> MGhcT s m a #

gmask :: ((MGhcT s m a -> MGhcT s m a) -> MGhcT s m b) -> MGhcT s m b #

gbracket :: MGhcT s m a -> (a -> MGhcT s m b) -> (a -> MGhcT s m c) -> MGhcT s m c #

gfinally :: MGhcT s m a -> MGhcT s m b -> MGhcT s m a #

MonadLog m => MonadLog (MGhcT s m) Source # 

Methods

askLog :: MGhcT s m Log #

localLog :: (Log -> Log) -> MGhcT s m a -> MGhcT s m a #

runGhcM :: MonadLog m => Maybe FilePath -> GhcM a -> m a Source #

ghcWorker :: MonadLog m => m GhcWorker Source #

Multi-session ghc worker

workerSession :: SessionTarget -> GhcM () Source #

Create session with options

Initializers and actions

ghcRun :: GhcMonad m => [String] -> m a -> m a Source #

Run ghc

withFlags :: GhcMonad m => m a -> m a Source #

Alter DynFlags temporary

modifyFlags :: GhcMonad m => (DynFlags -> DynFlags) -> m () Source #

Update DynFlags

addCmdOpts :: (MonadLog m, GhcMonad m) => [String] -> m () Source #

Add options without reinit session

setCmdOpts :: (MonadLog m, GhcMonad m) => [String] -> m () Source #

Set options after session reinit

importModules :: GhcMonad m => [String] -> m () Source #

Import some modules

preludeModules :: [String] Source #

Default interpreter modules

evaluate :: GhcMonad m => String -> m String Source #

Evaluate expression

clearTargets :: GhcMonad m => m () Source #

Clear loaded targets

makeTarget :: GhcMonad m => String -> Maybe String -> m Target Source #

Make target with its source code optional

loadTargets :: GhcMonad m => [Target] -> m () Source #

Load all targets

Utils

listPackages :: GhcMonad m => m [ModulePackage] Source #

Get list of installed packages

spanRegion :: SrcSpan -> Region Source #

Get region of SrcSpan

withCurrentDirectory :: GhcMonad m => FilePath -> m a -> m a Source #

Set current directory and restore it after action

logToChan :: Chan (Note OutputMessage) -> LogAction Source #

Log ghc warnings and errors as to chan You may have to apply recalcTabs on result notes

logToNull :: LogAction Source #

Don't log ghc warnings and errors

data Ghc a :: * -> * #

A minimal implementation of a GhcMonad. If you need a custom monad, e.g., to maintain additional state consider wrapping this monad or using GhcT.

Instances

Monad Ghc 

Methods

(>>=) :: Ghc a -> (a -> Ghc b) -> Ghc b #

(>>) :: Ghc a -> Ghc b -> Ghc b #

return :: a -> Ghc a #

fail :: String -> Ghc a #

Functor Ghc 

Methods

fmap :: (a -> b) -> Ghc a -> Ghc b #

(<$) :: a -> Ghc b -> Ghc a #

MonadFix Ghc 

Methods

mfix :: (a -> Ghc a) -> Ghc a #

Applicative Ghc 

Methods

pure :: a -> Ghc a #

(<*>) :: Ghc (a -> b) -> Ghc a -> Ghc b #

(*>) :: Ghc a -> Ghc b -> Ghc b #

(<*) :: Ghc a -> Ghc b -> Ghc a #

MonadIO Ghc 

Methods

liftIO :: IO a -> Ghc a #

GhcMonad Ghc 
HasDynFlags Ghc 
ExceptionMonad Ghc 

Methods

gcatch :: Exception e => Ghc a -> (e -> Ghc a) -> Ghc a #

gmask :: ((Ghc a -> Ghc a) -> Ghc b) -> Ghc b #

gbracket :: Ghc a -> (a -> Ghc b) -> (a -> Ghc c) -> Ghc c #

gfinally :: Ghc a -> Ghc b -> Ghc a #

newtype LogT m a :: (* -> *) -> * -> * #

Constructors

LogT 

Fields

Instances

MonadTrans LogT 

Methods

lift :: Monad m => m a -> LogT m a #

Monad m => MonadReader Log (LogT m) 

Methods

ask :: LogT m Log #

local :: (Log -> Log) -> LogT m a -> LogT m a #

reader :: (Log -> a) -> LogT m a #

Monad m => Monad (LogT m) 

Methods

(>>=) :: LogT m a -> (a -> LogT m b) -> LogT m b #

(>>) :: LogT m a -> LogT m b -> LogT m b #

return :: a -> LogT m a #

fail :: String -> LogT m a #

Functor m => Functor (LogT m) 

Methods

fmap :: (a -> b) -> LogT m a -> LogT m b #

(<$) :: a -> LogT m b -> LogT m a #

Applicative m => Applicative (LogT m) 

Methods

pure :: a -> LogT m a #

(<*>) :: LogT m (a -> b) -> LogT m a -> LogT m b #

(*>) :: LogT m a -> LogT m b -> LogT m b #

(<*) :: LogT m a -> LogT m b -> LogT m a #

MonadIO m => MonadIO (LogT m) 

Methods

liftIO :: IO a -> LogT m a #

MonadThrow m => MonadThrow (LogT m) 

Methods

throwM :: Exception e => e -> LogT m a #

MonadCatch m => MonadCatch (LogT m) 

Methods

catch :: Exception e => LogT m a -> (e -> LogT m a) -> LogT m a #

MonadMask m => MonadMask (LogT m) 

Methods

mask :: ((forall a. LogT m a -> LogT m a) -> LogT m b) -> LogT m b #

uninterruptibleMask :: ((forall a. LogT m a -> LogT m a) -> LogT m b) -> LogT m b #

(MonadIO m, MonadMask m) => MonadLog (LogT m) 

Methods

askLog :: LogT m Log #

localLog :: (Log -> Log) -> LogT m a -> LogT m a #

Orphan instances

MonadThrow Ghc Source # 

Methods

throwM :: Exception e => e -> Ghc a #

ExceptionMonad m => ExceptionMonad (LogT m) Source # 

Methods

gcatch :: Exception e => LogT m a -> (e -> LogT m a) -> LogT m a #

gmask :: ((LogT m a -> LogT m a) -> LogT m b) -> LogT m b #

gbracket :: LogT m a -> (a -> LogT m b) -> (a -> LogT m c) -> LogT m c #

gfinally :: LogT m a -> LogT m b -> LogT m a #

(Monad m, GhcMonad m) => GhcMonad (ReaderT * r m) Source # 

Methods

getSession :: ReaderT * r m HscEnv #

setSession :: HscEnv -> ReaderT * r m () #