| Safe Haskell | Safe-Inferred | 
|---|---|
| Language | Haskell2010 | 
GHC.Driver.Env.Types
Synopsis
- newtype Hsc a = Hsc (HscEnv -> Messages GhcMessage -> IO (a, Messages GhcMessage))
 - data HscEnv = HscEnv {
- hsc_dflags :: DynFlags
 - hsc_targets :: [Target]
 - hsc_mod_graph :: ModuleGraph
 - hsc_IC :: InteractiveContext
 - hsc_NC :: !NameCache
 - hsc_FC :: !FinderCache
 - hsc_type_env_vars :: KnotVars (IORef TypeEnv)
 - hsc_interp :: Maybe Interp
 - hsc_plugins :: !Plugins
 - hsc_unit_env :: UnitEnv
 - hsc_logger :: !Logger
 - hsc_hooks :: !Hooks
 - hsc_tmpfs :: !TmpFs
 - hsc_llvm_config :: !LlvmConfigCache
 
 
Documentation
The Hsc monad: Passing an environment and diagnostic state
Constructors
| Hsc (HscEnv -> Messages GhcMessage -> IO (a, Messages GhcMessage)) | 
HscEnv is like Session, except that some of the fields are immutable.
 An HscEnv is used to compile a single module from plain Haskell source
 code (after preprocessing) to either C, assembly or C--. It's also used
 to store the dynamic linker state to allow for multiple linkers in the
 same address space.
 Things like the module graph don't change during a single compilation.
Historical note: "hsc" used to be the name of the compiler binary, when there was a separate driver and compiler. To compile a single module, the driver would invoke hsc on the source code... so nowadays we think of hsc as the layer of the compiler that deals with compiling a single module.
Constructors
| HscEnv | |
Fields 
  | |
Instances
| ContainsDynFlags HscEnv Source # | |
Defined in GHC.Driver.Env.Types Methods extractDynFlags :: HscEnv -> DynFlags Source #  | |