ghc-9.6.3: 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 GhcRn)
  - 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_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_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 GhcRn)

  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_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 Source #

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_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_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