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

Safe Haskell | Ignore
Language | GHC2021

GHC.Unit.Home.ModInfo

Description

Info about modules in the "home" unit

Synopsis

- data HomeModInfo = HomeModInfo {
  - hm_iface :: !ModIface
  - hm_details :: ModDetails
  - hm_linkable :: !HomeModLinkable
  }
- data HomeModLinkable = HomeModLinkable {
  - homeMod_bytecode :: !(Maybe Linkable)
  - homeMod_object :: !(Maybe Linkable)
  }
- homeModInfoObject :: HomeModInfo -> Maybe Linkable
- homeModInfoByteCode :: HomeModInfo -> Maybe Linkable
- emptyHomeModInfoLinkable :: HomeModLinkable
- justBytecode :: Linkable -> HomeModLinkable
- justObjects :: Linkable -> HomeModLinkable
- bytecodeAndObjects :: Linkable -> Linkable -> HomeModLinkable
- type HomePackageTable = DModuleNameEnv HomeModInfo
- emptyHomePackageTable :: HomePackageTable
- lookupHpt :: HomePackageTable -> ModuleName -> Maybe HomeModInfo
- eltsHpt :: HomePackageTable -> [HomeModInfo]
- concatHpt :: (HomeModInfo -> [a]) -> HomePackageTable -> [a]
- filterHpt :: (HomeModInfo -> Bool) -> HomePackageTable -> HomePackageTable
- allHpt :: (HomeModInfo -> Bool) -> HomePackageTable -> Bool
- anyHpt :: (HomeModInfo -> Bool) -> HomePackageTable -> Bool
- mapHpt :: (HomeModInfo -> HomeModInfo) -> HomePackageTable -> HomePackageTable
- delFromHpt :: HomePackageTable -> ModuleName -> HomePackageTable
- addToHpt :: HomePackageTable -> ModuleName -> HomeModInfo -> HomePackageTable
- addHomeModInfoToHpt :: HomeModInfo -> HomePackageTable -> HomePackageTable
- addListToHpt :: HomePackageTable -> [(ModuleName, HomeModInfo)] -> HomePackageTable
- lookupHptDirectly :: HomePackageTable -> Unique -> Maybe HomeModInfo
- lookupHptByModule :: HomePackageTable -> Module -> Maybe HomeModInfo
- listToHpt :: [(ModuleName, HomeModInfo)] -> HomePackageTable
- listHMIToHpt :: [HomeModInfo] -> HomePackageTable
- pprHPT :: HomePackageTable -> SDoc

# Documentation

data HomeModInfo Source #

Information about modules in the package being compiled

Constructors

HomeModInfo |

Fields

- hm_iface :: !ModIface

  The basic loaded interface file: every loaded module has one of these, even if it is imported from another package

- hm_details :: ModDetails

  Extra information that has been created from the `ModIface` for the module, typically during typechecking

- hm_linkable :: !HomeModLinkable

  The actual artifact we would like to link to access things in this module. See Note [Home module build products]

  `hm_linkable` might be empty:

  1. If this is an .hs-boot module
  2. Temporarily during compilation if we pruned away the old linkable because it was out of date.

  When re-linking a module (`HscNoRecomp`), we construct the `HomeModInfo` by building a new `ModDetails` from the old `ModIface` (only).

data HomeModLinkable Source #

Constructors

HomeModLinkable |

Fields

- homeMod_bytecode :: !(Maybe Linkable)
- homeMod_object :: !(Maybe Linkable)

#### Instances

Instances details

Outputable HomeModLinkable Source # |
Instance details Defined in GHC.Unit.Home.ModInfo Methods ppr :: HomeModLinkable -> SDoc Source #

homeModInfoObject :: HomeModInfo -> Maybe Linkable Source #

homeModInfoByteCode :: HomeModInfo -> Maybe Linkable Source #

emptyHomeModInfoLinkable :: HomeModLinkable Source #

justBytecode :: Linkable -> HomeModLinkable Source #

justObjects :: Linkable -> HomeModLinkable Source #

bytecodeAndObjects :: Linkable -> Linkable -> HomeModLinkable Source #

type HomePackageTable = DModuleNameEnv HomeModInfo Source #

Helps us find information about modules in the home package

emptyHomePackageTable :: HomePackageTable Source #

Constructs an empty HomePackageTable

lookupHpt :: HomePackageTable -> ModuleName -> Maybe HomeModInfo Source #

eltsHpt :: HomePackageTable -> [HomeModInfo] Source #

concatHpt :: (HomeModInfo -> [a]) -> HomePackageTable -> [a] Source #

Like `concatMap f . `eltsHpt``, but filters out all `HomeModInfo` for which `f` returns the empty list before doing the sort inherent to `eltsUDFM`.

filterHpt :: (HomeModInfo -> Bool) -> HomePackageTable -> HomePackageTable Source #

allHpt :: (HomeModInfo -> Bool) -> HomePackageTable -> Bool Source #

anyHpt :: (HomeModInfo -> Bool) -> HomePackageTable -> Bool Source #

mapHpt :: (HomeModInfo -> HomeModInfo) -> HomePackageTable -> HomePackageTable Source #

delFromHpt :: HomePackageTable -> ModuleName -> HomePackageTable Source #

addToHpt :: HomePackageTable -> ModuleName -> HomeModInfo -> HomePackageTable Source #

addHomeModInfoToHpt :: HomeModInfo -> HomePackageTable -> HomePackageTable Source #

addListToHpt :: HomePackageTable -> [(ModuleName, HomeModInfo)] -> HomePackageTable Source #

lookupHptDirectly :: HomePackageTable -> Unique -> Maybe HomeModInfo Source #

lookupHptByModule :: HomePackageTable -> Module -> Maybe HomeModInfo Source #

listToHpt :: [(ModuleName, HomeModInfo)] -> HomePackageTable Source #

listHMIToHpt :: [HomeModInfo] -> HomePackageTable Source #

pprHPT :: HomePackageTable -> SDoc Source #