ghc-lib-parser-8.10.7.20220219: The GHC API, decoupled from GHC versions
Safe HaskellNone
LanguageHaskell2010

PipelineMonad

Description

The CompPipeline monad and associated ops

Defined in separate module so that it can safely be imported from Hooks

Documentation

newtype CompPipeline a Source #

Constructors

P 

Fields

Instances

Instances details
Monad CompPipeline Source # 
Instance details

Defined in PipelineMonad

Functor CompPipeline Source # 
Instance details

Defined in PipelineMonad

Methods

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

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

Applicative CompPipeline Source # 
Instance details

Defined in PipelineMonad

MonadIO CompPipeline Source # 
Instance details

Defined in PipelineMonad

Methods

liftIO :: IO a -> CompPipeline a #

HasDynFlags CompPipeline Source # 
Instance details

Defined in PipelineMonad

data PhasePlus Source #

Instances

Instances details
Outputable PhasePlus Source # 
Instance details

Defined in PipelineMonad

data PipeEnv Source #

Constructors

PipeEnv 

Fields

data PipeState Source #

Constructors

PipeState 

Fields

  • hsc_env :: HscEnv

    only the DynFlags change in the HscEnv. The DynFlags change at various points, for example when we read the OPTIONS_GHC pragmas in the Cpp phase.

  • maybe_loc :: Maybe ModLocation

    the ModLocation. This is discovered during compilation, in the Hsc phase where we read the module header.

  • foreign_os :: [FilePath]

    additional object files resulting from compiling foreign code. They come from two sources: foreign stubs, and add{C,Cxx,Objc,Objcxx}File from template haskell

  • iface :: Maybe ModIface

    Interface generated by HscOut phase. Only available after the phase runs.

data PipelineOutput Source #

Constructors

Temporary TempFileLifetime

Output should be to a temporary file: we're going to run more compilation steps on this output later.

Persistent

We want a persistent file, i.e. a file in the current directory derived from the input filename, but with the appropriate extension. eg. in "ghc -c Foo.hs" the output goes into ./Foo.o.

SpecificFile

The output must go into the specific outputFile in DynFlags. We don't store the filename in the constructor as it changes when doing -dynamic-too.

Instances

Instances details
Show PipelineOutput Source # 
Instance details

Defined in PipelineMonad