GHC.Unit.Module.ModGuts

ghc-lib-parser-9.14.1.20251220: The GHC API, decoupled from GHC versions

Safe Haskell | Ignore
Language | GHC2021

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 :: !(Maybe [Usage])
  - mg_rdr_env :: !GlobalRdrEnv
  - mg_fix_env :: !FixityEnv
  - mg_tcs :: ![TyCon]
  - mg_defaults :: !DefaultEnv
  - 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 GhcRn)
  - mg_anns :: [Annotation]
  - mg_complete_matches :: CompleteMatches
  - mg_hpc_info :: !HpcInfo
  - mg_modBreaks :: !(Maybe ModBreaks)
  - mg_inst_env :: InstEnv
  - mg_fam_inst_env :: FamInstEnv
  - mg_boot_exports :: !NameSet
  - mg_safe_haskell :: SafeHaskellMode
  - mg_trust_pkg :: Bool
  - mg_docs :: !(Maybe Docs)
  }
- mg_mnwib :: ModGuts -> ModuleNameWithIsBoot
- data CgGuts = CgGuts {
  - cg_module :: !Module
  - cg_tycons :: [TyCon]
  - cg_binds :: CoreProgram
  - cg_ccs :: [CostCentre]
  - cg_foreign :: !ForeignStubs
  - cg_foreign_files :: ![(ForeignSrcLang, FilePath)]
  - cg_dep_pkgs :: !(Set UnitId)
  - cg_modBreaks :: !(Maybe ModBreaks)
  - cg_spt_entries :: [SptEntry]
  }

# Documentation

data ModGuts #

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 :: !(Maybe [Usage]) What was used? Used for interfaces. 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_defaults :: !DefaultEnv Class defaults exported from this module 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 GhcRn) Warnings declared in the module mg_anns :: [Annotation] Annotations declared in this module mg_complete_matches :: CompleteMatches 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_boot_exports :: !NameSet 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_docs :: !(Maybe Docs) Documentation.

mg_mnwib :: ModGuts -> ModuleNameWithIsBoot #

data CgGuts #

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_ccs :: [CostCentre] cg_foreign :: !ForeignStubs Foreign export stubs cg_foreign_files :: ![(ForeignSrcLang, FilePath)] cg_dep_pkgs :: !(Set UnitId) Dependent packages, used to generate #includes for C code gen 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