GHC.Unit.Module.ModGuts

ghc-9.2.4: The GHC API

Safe Haskell | Safe-Inferred
Language | Haskell2010

GHC.Unit.Module.ModGuts

Synopsis

- data ModGuts = ModGuts {
  - mg_module :: !Module
  - mg_hsc_src :: HscSource
  - mg_loc :: SrcSpan
  - mg_exports :: ![AvailInfo]
  - mg_deps :: !Dependencies
  - mg_usages :: ![Usage]
  - mg_used_th :: !Bool
  - mg_rdr_env :: !GlobalRdrEnv
  - mg_fix_env :: !FixityEnv
  - mg_tcs :: ![TyCon]
  - mg_insts :: ![ClsInst]
  - mg_fam_insts :: ![FamInst]
  - mg_patsyns :: ![PatSyn]
  - mg_rules :: ![CoreRule]
  - mg_binds :: !CoreProgram
  - mg_foreign :: !ForeignStubs
  - mg_foreign_files :: ![(ForeignSrcLang, FilePath)]
  - mg_warns :: !Warnings
  - mg_anns :: [Annotation]
  - mg_complete_matches :: [CompleteMatch]
  - mg_hpc_info :: !HpcInfo
  - mg_modBreaks :: !(Maybe ModBreaks)
  - mg_inst_env :: InstEnv
  - mg_fam_inst_env :: FamInstEnv
  - mg_safe_haskell :: SafeHaskellMode
  - mg_trust_pkg :: Bool
  - mg_doc_hdr :: !(Maybe HsDocString)
  - mg_decl_docs :: !DeclDocMap
  - mg_arg_docs :: !ArgDocMap
  }
- data CgGuts = CgGuts {
  - cg_module :: !Module
  - cg_tycons :: [TyCon]
  - cg_binds :: CoreProgram
  - cg_foreign :: !ForeignStubs
  - cg_foreign_files :: ![(ForeignSrcLang, FilePath)]
  - cg_dep_pkgs :: ![UnitId]
  - cg_hpc_info :: !HpcInfo
  - cg_modBreaks :: !(Maybe ModBreaks)
  - cg_spt_entries :: [SptEntry]
  }

# Documentation

data ModGuts Source #

A ModGuts is carried through the compiler, accumulating stuff as it goes There is only one ModGuts at any time, the one for the module being compiled right now. Once it is compiled, a `ModIface` and `ModDetails` are extracted and the ModGuts is discarded.

Constructors

ModGuts |
Fields mg_module :: !Module Module being compiled mg_hsc_src :: HscSource Whether it's an hs-boot module mg_loc :: SrcSpan For error messages from inner passes mg_exports :: ![AvailInfo] What it exports mg_deps :: !Dependencies What it depends on, directly or otherwise mg_usages :: ![Usage] What was used? Used for interfaces. mg_used_th :: !Bool Did we run a TH splice? mg_rdr_env :: !GlobalRdrEnv Top-level lexical environment mg_fix_env :: !FixityEnv Fixities declared in this module. Used for creating interface files. mg_tcs :: ![TyCon] TyCons declared in this module (includes TyCons for classes) mg_insts :: ![ClsInst] Class instances declared in this module mg_fam_insts :: ![FamInst] Family instances declared in this module mg_patsyns :: ![PatSyn] Pattern synonyms declared in this module mg_rules :: ![CoreRule] Before the core pipeline starts, contains See Note [Overall plumbing for rules] in GHC.Core.Rules mg_binds :: !CoreProgram Bindings for this module mg_foreign :: !ForeignStubs Foreign exports declared in this module mg_foreign_files :: ![(ForeignSrcLang, FilePath)] Files to be compiled with the C compiler mg_warns :: !Warnings Warnings declared in the module mg_anns :: [Annotation] Annotations declared in this module mg_complete_matches :: [CompleteMatch] Complete Matches mg_hpc_info :: !HpcInfo Coverage tick boxes in the module mg_modBreaks :: !(Maybe ModBreaks) Breakpoints for the module mg_inst_env :: InstEnv Class instance environment for home-package modules (including this one); c.f. `tcg_inst_env` mg_fam_inst_env :: FamInstEnv Type-family instance environment for home-package modules (including this one); c.f. `tcg_fam_inst_env` mg_safe_haskell :: SafeHaskellMode Safe Haskell mode mg_trust_pkg :: Bool Do we need to trust our own package for Safe Haskell? See Note [Trust Own Package] in GHC.Rename.Names mg_doc_hdr :: !(Maybe HsDocString) Module header. mg_decl_docs :: !DeclDocMap Docs on declarations. mg_arg_docs :: !ArgDocMap Docs on arguments.

data CgGuts Source #

A restricted form of `ModGuts` for code generation purposes

Constructors

CgGuts |
Fields cg_module :: !Module Module being compiled cg_tycons :: [TyCon] Algebraic data types (including ones that started life as classes); generate constructors and info tables. Includes newtypes, just for the benefit of External Core cg_binds :: CoreProgram The tidied main bindings, including previously-implicit bindings for record and class selectors, and data constructor wrappers. But *not* data constructor workers; reason: we regard them as part of the code-gen of tycons cg_foreign :: !ForeignStubs Foreign export stubs cg_foreign_files :: ![(ForeignSrcLang, FilePath)] cg_dep_pkgs :: ![UnitId] Dependent packages, used to generate #includes for C code gen cg_hpc_info :: !HpcInfo Program coverage tick box information cg_modBreaks :: !(Maybe ModBreaks) Module breakpoints cg_spt_entries :: [SptEntry] Static pointer table entries for static forms defined in the module. See Note [Grand plan for static forms] in GHC.Iface.Tidy.StaticPtrTable