Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data HscEnv
- data InteractiveContext = InteractiveContext {
- ic_dflags :: DynFlags
- ic_mod_index :: Int
- ic_imports :: [InteractiveImport]
- ic_tythings :: [TyThing]
- ic_rn_gbl_env :: GlobalRdrEnv
- ic_instances :: ([ClsInst], [FamInst])
- ic_fix_env :: FixityEnv
- ic_default :: Maybe [Type]
- ic_resume :: [Resume]
- ic_monad :: Name
- ic_int_print :: Name
- ic_cwd :: Maybe FilePath
- setInteractivePrintName :: InteractiveContext -> Name -> InteractiveContext
- setInteractiveDynFlags :: GhcMonad m => DynFlags -> m ()
- hsc_dflags :: HscEnv -> DynFlags
- hsc_EPS :: HscEnv -> IORef ExternalPackageState
- hsc_logger :: HscEnv -> Logger
- hsc_tmpfs :: HscEnv -> TmpFs
- hsc_unit_env :: HscEnv -> UnitEnv
- hsc_hooks :: HscEnv -> Hooks
- hscSetHooks :: Hooks -> HscEnv -> HscEnv
- type TmpFs = ()
- hscHomeUnit :: HscEnv -> HomeUnit
- type HomeUnit = UnitId
- setHomeUnitId_ :: UnitId -> DynFlags -> DynFlags
- mkHomeModule :: HomeUnit -> ModuleName -> Module
- newtype Logger = Logger {}
- type UnitEnv = ()
- hscSetUnitEnv :: UnitEnv -> HscEnv -> HscEnv
- hscSetFlags :: DynFlags -> HscEnv -> HscEnv
- initTempFs :: HscEnv -> IO HscEnv
- homeUnitId_ :: DynFlags -> UnitId
- setBytecodeLinkerOptions :: DynFlags -> DynFlags
- setInterpreterLinkerOptions :: DynFlags -> DynFlags
- safeImportsOn :: DynFlags -> Bool
- type Ways = [Way]
- data Way
- hostFullWays :: Ways
- setWays :: Ways -> DynFlags -> DynFlags
- wayGeneralFlags :: Platform -> Way -> [GeneralFlag]
- wayUnsetGeneralFlags :: Platform -> Way -> [GeneralFlag]
- type Backend = HscTarget
- setBackend :: Backend -> DynFlags -> DynFlags
- platformDefaultBackend :: DynFlags -> Backend
Documentation
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.
data InteractiveContext #
Interactive context, recording information about the state of the context in which statements are executed in a GHCi session.
InteractiveContext | |
|
setInteractiveDynFlags :: GhcMonad m => DynFlags -> m () #
Set the DynFlags
used to evaluate interactive expressions.
Note: this cannot be used for changes to packages. Use
setSessionDynFlags
, or setProgramDynFlags
and then copy the
pkgState
into the interactive DynFlags
.
hsc_dflags :: HscEnv -> DynFlags #
The dynamic flag settings
hsc_EPS :: HscEnv -> IORef ExternalPackageState #
Information about the currently loaded external packages. This is mutable because packages will be demand-loaded during a compilation run as required.
hsc_logger :: HscEnv -> Logger Source #
hsc_unit_env :: HscEnv -> UnitEnv Source #
HomeUnit
hscHomeUnit :: HscEnv -> HomeUnit Source #
mkHomeModule :: HomeUnit -> ModuleName -> Module Source #
Provide backwards Compatible
Home Unit
homeUnitId_ :: DynFlags -> UnitId Source #
DynFlags Helper
setBytecodeLinkerOptions :: DynFlags -> DynFlags Source #
We don't want to generate object code so we compile to bytecode (HscInterpreted) which implies LinkInMemory HscInterpreted
safeImportsOn :: DynFlags -> Bool Source #
Ways
hostFullWays :: Ways Source #
wayGeneralFlags :: Platform -> Way -> [GeneralFlag] #
wayUnsetGeneralFlags :: Platform -> Way -> [GeneralFlag] #