ghc-9.2.5: The GHC API

GHC.Unit.External

Synopsis

# Documentation

Information about other packages that we have slurped in by reading their interface files

Constructors

 EPS Fieldseps_is_boot :: !(ModuleNameEnv ModuleNameWithIsBoot)In OneShot mode (only), home-package modules accumulate in the external package state, and are sucked in lazily. For these home-pkg modules (only) we need to record which are boot modules. We set this field after loading all the explicitly-imported interfaces, but before doing anything elseThe ModuleName part is not necessary, but it's useful for debug prints, and it's convenient because this field comes direct from imp_dep_modseps_PIT :: !PackageIfaceTableThe ModIface_s for modules in external packages whose interfaces we have opened. The declarations in these interface files are held in the eps_decls, eps_inst_env, eps_fam_inst_env and eps_rules fields of this record, not in the mi_decls fields of the interface we have sucked in.What is in the PIT is:The ModuleFingerprint infoIts exportsFixitiesDeprecations and warningseps_free_holes :: InstalledModuleEnv (UniqDSet ModuleName)Cache for mi_free_holes. Ordinarily, we can rely on the eps_PIT for this information, EXCEPT that when we do dependency analysis, we need to look at the Dependencies of our imports to determine what their precise free holes are (moduleFreeHolesPrecise). We don't want to repeatedly reread in the interface for every import, so cache it here. When the PIT gets filled in we can drop these entries.eps_PTE :: !PackageTypeEnvResult of typechecking all the external package interface files we have sucked in. The domain of the mapping is external-package moduleseps_inst_env :: !PackageInstEnvThe total InstEnv accumulated from all the external-package moduleseps_fam_inst_env :: !PackageFamInstEnvThe total FamInstEnv accumulated from all the external-package moduleseps_rule_base :: !PackageRuleBaseThe total RuleEnv accumulated from all the external-package moduleseps_ann_env :: !PackageAnnEnvThe total AnnEnv accumulated from all the external-package moduleseps_complete_matches :: !PackageCompleteMatchesThe total CompleteMatches accumulated from all the external-package moduleseps_mod_fam_inst_env :: !(ModuleEnv FamInstEnv)The family instances accumulated from external packages, keyed off the module that declared themeps_stats :: !EpsStatsStastics about what was loaded from external packages

data EpsStats Source #

Accumulated statistics about what we are putting into the ExternalPackageState. "In" means stuff that is just read from interface files, "Out" means actually sucked in and type-checked

Constructors

 EpsStats Fieldsn_ifaces_in, n_decls_in, n_decls_out, n_rules_in, n_rules_out, n_insts_in, n_insts_out :: !Int