HscMain
Description
Main driver for the compiling plain Haskell source code.
This module implements compilation of a Haskell-only source file. It is not concerned with preprocessing of source files; this is handled in DriverPipeline.
- newHscEnv :: GhcApiCallbacks -> DynFlags -> IO HscEnv
- hscCmmFile :: GhcMonad m => HscEnv -> FilePath -> m ()
- hscParseIdentifier :: GhcMonad m => DynFlags -> String -> m (Located RdrName)
- hscSimplify :: GhcMonad m => ModGuts -> m ModGuts
- hscNormalIface :: GhcMonad m => ModGuts -> Maybe Fingerprint -> m (ModIface, Bool, ModDetails, CgGuts)
- hscWriteIface :: GhcMonad m => ModIface -> Bool -> ModSummary -> m ()
- hscGenHardCode :: GhcMonad m => CgGuts -> ModSummary -> m Bool
- data HsCompiler a = HsCompiler {
- hscNoRecomp :: GhcMonad m => ModIface -> m a
- hscRecompile :: GhcMonad m => ModSummary -> Maybe Fingerprint -> m a
- hscBackend :: GhcMonad m => TcGblEnv -> ModSummary -> Maybe Fingerprint -> m a
- hscGenBootOutput :: GhcMonad m => TcGblEnv -> ModSummary -> Maybe Fingerprint -> m a
- hscGenOutput :: GhcMonad m => ModGuts -> ModSummary -> Maybe Fingerprint -> m a
- hscOneShotCompiler :: HsCompiler OneShotResult
- hscNothingCompiler :: HsCompiler NothingResult
- hscInteractiveCompiler :: HsCompiler InteractiveResult
- hscBatchCompiler :: HsCompiler BatchResult
- hscCompileOneShot :: Compiler OneShotResult
- hscCompileBatch :: Compiler (HscStatus, ModIface, ModDetails)
- hscCompileNothing :: Compiler (HscStatus, ModIface, ModDetails)
- hscCompileInteractive :: Compiler (InteractiveStatus, ModIface, ModDetails)
- hscCheckRecompBackend :: HsCompiler a -> TcGblEnv -> Compiler a
- data HscStatus' a
- = HscNoRecomp
- | HscRecomp Bool a
- type InteractiveStatus = HscStatus' (Maybe (CompiledByteCode, ModBreaks))
- type HscStatus = HscStatus' ()
- hscParse :: GhcMonad m => ModSummary -> m (Located (HsModule RdrName))
- hscTypecheck :: GhcMonad m => ModSummary -> Located (HsModule RdrName) -> m TcGblEnv
- hscTypecheckRename :: GhcMonad m => ModSummary -> Located (HsModule RdrName) -> m (TcGblEnv, RenamedStuff)
- hscDesugar :: GhcMonad m => ModSummary -> TcGblEnv -> m ModGuts
- makeSimpleIface :: GhcMonad m => Maybe ModIface -> TcGblEnv -> ModDetails -> m (ModIface, Bool)
- makeSimpleDetails :: GhcMonad m => TcGblEnv -> m ModDetails
Documentation
newHscEnv :: GhcApiCallbacks -> DynFlags -> IO HscEnv
hscCmmFile :: GhcMonad m => HscEnv -> FilePath -> m ()
hscSimplify :: GhcMonad m => ModGuts -> m ModGuts
hscNormalIface :: GhcMonad m => ModGuts -> Maybe Fingerprint -> m (ModIface, Bool, ModDetails, CgGuts)
hscWriteIface :: GhcMonad m => ModIface -> Bool -> ModSummary -> m ()
Arguments
:: GhcMonad m | |
=> CgGuts | |
-> ModSummary | |
-> m Bool |
|
Compile to hard-code.
data HsCompiler a
Constructors
HsCompiler | |
Fields
|
hscOneShotCompiler :: HsCompiler OneShotResult
hscNothingCompiler :: HsCompiler NothingResult
hscInteractiveCompiler :: HsCompiler InteractiveResult
hscBatchCompiler :: HsCompiler BatchResult
hscCompileOneShot :: Compiler OneShotResult
hscCompileBatch :: Compiler (HscStatus, ModIface, ModDetails)
hscCompileNothing :: Compiler (HscStatus, ModIface, ModDetails)
hscCompileInteractive :: Compiler (InteractiveStatus, ModIface, ModDetails)
hscCheckRecompBackend :: HsCompiler a -> TcGblEnv -> Compiler a
data HscStatus' a
Constructors
HscNoRecomp | |
HscRecomp Bool a |
type InteractiveStatus = HscStatus' (Maybe (CompiledByteCode, ModBreaks))
type HscStatus = HscStatus' ()
hscParse :: GhcMonad m => ModSummary -> m (Located (HsModule RdrName))
parse a file, returning the abstract syntax
hscTypecheck :: GhcMonad m => ModSummary -> Located (HsModule RdrName) -> m TcGblEnv
Rename and typecheck a module
hscTypecheckRename :: GhcMonad m => ModSummary -> Located (HsModule RdrName) -> m (TcGblEnv, RenamedStuff)
Rename and typecheck a module, additionally returning the renamed syntax
hscDesugar :: GhcMonad m => ModSummary -> TcGblEnv -> m ModGuts
Convert a typechecked module to Core
makeSimpleIface :: GhcMonad m => Maybe ModIface -> TcGblEnv -> ModDetails -> m (ModIface, Bool)
Make a ModIface
from the results of typechecking. Used when
not optimising, and the interface doesn't need to contain any
unfoldings or other cross-module optimisation info.
ToDo: the old interface is only needed to get the version numbers,
we should use fingerprint versions instead.
makeSimpleDetails :: GhcMonad m => TcGblEnv -> m ModDetails
Make a ModDetails
from the results of typechecking. Used when
typechecking only, as opposed to full compilation.