Safe Haskell | Ignore |
---|---|
Language | GHC2021 |
GHC.Unit.Env
Synopsis
- data UnitEnv = UnitEnv {}
- initUnitEnv :: UnitId -> HomeUnitGraph -> GhcNameVersion -> Platform -> IO UnitEnv
- ueEPS :: UnitEnv -> IO ExternalPackageState
- unsafeGetHomeUnit :: UnitEnv -> HomeUnit
- updateHug :: (HomeUnitGraph -> HomeUnitGraph) -> UnitEnv -> UnitEnv
- updateHpt_lazy :: (HomePackageTable -> HomePackageTable) -> UnitEnv -> UnitEnv
- updateHpt :: (HomePackageTable -> HomePackageTable) -> UnitEnv -> UnitEnv
- ue_units :: HasDebugCallStack => UnitEnv -> UnitState
- ue_currentHomeUnitEnv :: HasDebugCallStack => UnitEnv -> HomeUnitEnv
- ue_setUnits :: UnitState -> UnitEnv -> UnitEnv
- ue_setUnitFlags :: HasDebugCallStack => UnitId -> DynFlags -> UnitEnv -> UnitEnv
- ue_unit_dbs :: UnitEnv -> Maybe [UnitDatabase UnitId]
- ue_all_home_unit_ids :: UnitEnv -> Set UnitId
- ue_setUnitDbs :: Maybe [UnitDatabase UnitId] -> UnitEnv -> UnitEnv
- ue_hpt :: HasDebugCallStack => UnitEnv -> HomePackageTable
- ue_homeUnit :: UnitEnv -> Maybe HomeUnit
- ue_unsafeHomeUnit :: UnitEnv -> HomeUnit
- ue_setFlags :: HasDebugCallStack => DynFlags -> UnitEnv -> UnitEnv
- ue_setActiveUnit :: UnitId -> UnitEnv -> UnitEnv
- ue_currentUnit :: UnitEnv -> UnitId
- ue_findHomeUnitEnv :: HasDebugCallStack => UnitId -> UnitEnv -> HomeUnitEnv
- ue_updateHomeUnitEnv :: (HomeUnitEnv -> HomeUnitEnv) -> UnitId -> UnitEnv -> UnitEnv
- ue_unitHomeUnit :: UnitId -> UnitEnv -> HomeUnit
- ue_unitFlags :: HasDebugCallStack => UnitId -> UnitEnv -> DynFlags
- ue_renameUnitId :: HasDebugCallStack => UnitId -> UnitId -> UnitEnv -> UnitEnv
- ue_transitiveHomeDeps :: UnitId -> UnitEnv -> [UnitId]
- type HomeUnitGraph = UnitEnvGraph HomeUnitEnv
- data HomeUnitEnv = HomeUnitEnv {}
- mkHomeUnitEnv :: DynFlags -> HomePackageTable -> Maybe HomeUnit -> HomeUnitEnv
- lookupHugByModule :: Module -> HomeUnitGraph -> Maybe HomeModInfo
- hugElts :: HomeUnitGraph -> [(UnitId, HomeUnitEnv)]
- lookupHug :: HomeUnitGraph -> UnitId -> ModuleName -> Maybe HomeModInfo
- addHomeModInfoToHug :: HomeModInfo -> HomeUnitGraph -> HomeUnitGraph
- newtype UnitEnvGraph v = UnitEnvGraph {}
- type UnitEnvGraphKey = UnitId
- unitEnv_insert :: UnitEnvGraphKey -> v -> UnitEnvGraph v -> UnitEnvGraph v
- unitEnv_delete :: UnitEnvGraphKey -> UnitEnvGraph v -> UnitEnvGraph v
- unitEnv_adjust :: (v -> v) -> UnitEnvGraphKey -> UnitEnvGraph v -> UnitEnvGraph v
- unitEnv_new :: Map UnitEnvGraphKey v -> UnitEnvGraph v
- unitEnv_singleton :: UnitEnvGraphKey -> v -> UnitEnvGraph v
- unitEnv_map :: (v -> v) -> UnitEnvGraph v -> UnitEnvGraph v
- unitEnv_member :: UnitEnvGraphKey -> UnitEnvGraph v -> Bool
- unitEnv_lookup_maybe :: UnitEnvGraphKey -> UnitEnvGraph v -> Maybe v
- unitEnv_lookup :: UnitEnvGraphKey -> UnitEnvGraph v -> v
- unitEnv_keys :: UnitEnvGraph v -> Set UnitEnvGraphKey
- unitEnv_elts :: UnitEnvGraph v -> [(UnitEnvGraphKey, v)]
- unitEnv_hpts :: UnitEnvGraph HomeUnitEnv -> [HomePackageTable]
- unitEnv_foldWithKey :: (b -> UnitEnvGraphKey -> a -> b) -> b -> UnitEnvGraph a -> b
- unitEnv_union :: (a -> a -> a) -> UnitEnvGraph a -> UnitEnvGraph a -> UnitEnvGraph a
- unitEnv_mapWithKey :: (UnitEnvGraphKey -> v -> b) -> UnitEnvGraph v -> UnitEnvGraph b
- assertUnitEnvInvariant :: HasDebugCallStack => UnitEnv -> UnitEnv
- preloadUnitsInfo :: UnitEnv -> MaybeErr UnitErr [UnitInfo]
- preloadUnitsInfo' :: UnitEnv -> [UnitId] -> MaybeErr UnitErr [UnitInfo]
- isUnitEnvInstalledModule :: UnitEnv -> InstalledModule -> Bool
Documentation
Constructors
UnitEnv | |
Fields
|
initUnitEnv :: UnitId -> HomeUnitGraph -> GhcNameVersion -> Platform -> IO UnitEnv #
ueEPS :: UnitEnv -> IO ExternalPackageState #
unsafeGetHomeUnit :: UnitEnv -> HomeUnit #
Get home-unit
Unsafe because the home-unit may not be set
updateHug :: (HomeUnitGraph -> HomeUnitGraph) -> UnitEnv -> UnitEnv #
updateHpt_lazy :: (HomePackageTable -> HomePackageTable) -> UnitEnv -> UnitEnv #
updateHpt :: (HomePackageTable -> HomePackageTable) -> UnitEnv -> UnitEnv #
Unit Env helper functions
ue_units :: HasDebugCallStack => UnitEnv -> UnitState #
ue_setUnits :: UnitState -> UnitEnv -> UnitEnv #
ue_setUnitFlags :: HasDebugCallStack => UnitId -> DynFlags -> UnitEnv -> UnitEnv #
ue_unit_dbs :: UnitEnv -> Maybe [UnitDatabase UnitId] #
ue_all_home_unit_ids :: UnitEnv -> Set UnitId #
ue_setUnitDbs :: Maybe [UnitDatabase UnitId] -> UnitEnv -> UnitEnv #
ue_hpt :: HasDebugCallStack => UnitEnv -> HomePackageTable #
ue_homeUnit :: UnitEnv -> Maybe HomeUnit #
ue_unsafeHomeUnit :: UnitEnv -> HomeUnit #
ue_setFlags :: HasDebugCallStack => DynFlags -> UnitEnv -> UnitEnv #
ue_setActiveUnit :: UnitId -> UnitEnv -> UnitEnv #
ue_currentUnit :: UnitEnv -> UnitId #
ue_findHomeUnitEnv :: HasDebugCallStack => UnitId -> UnitEnv -> HomeUnitEnv #
ue_updateHomeUnitEnv :: (HomeUnitEnv -> HomeUnitEnv) -> UnitId -> UnitEnv -> UnitEnv #
ue_unitHomeUnit :: UnitId -> UnitEnv -> HomeUnit #
ue_unitFlags :: HasDebugCallStack => UnitId -> UnitEnv -> DynFlags #
ue_renameUnitId :: HasDebugCallStack => UnitId -> UnitId -> UnitEnv -> UnitEnv #
Rename a unit id in the internal unit env.
, it is assumed that the ue_renameUnitId
oldUnit newUnit UnitEnvoldUnit
exists in the map,
otherwise we panic.
The DynFlags
associated with the home unit will have its field homeUnitId
set to newUnit
.
ue_transitiveHomeDeps :: UnitId -> UnitEnv -> [UnitId] #
HomeUnitEnv
type HomeUnitGraph = UnitEnvGraph HomeUnitEnv #
data HomeUnitEnv #
Constructors
HomeUnitEnv | |
Fields
|
Instances
Outputable HomeUnitEnv # | |
Defined in GHC.Unit.Env Methods ppr :: HomeUnitEnv -> SDoc # | |
Outputable (UnitEnvGraph HomeUnitEnv) # | |
Defined in GHC.Unit.Env Methods ppr :: UnitEnvGraph HomeUnitEnv -> SDoc # |
mkHomeUnitEnv :: DynFlags -> HomePackageTable -> Maybe HomeUnit -> HomeUnitEnv #
lookupHugByModule :: Module -> HomeUnitGraph -> Maybe HomeModInfo #
hugElts :: HomeUnitGraph -> [(UnitId, HomeUnitEnv)] #
lookupHug :: HomeUnitGraph -> UnitId -> ModuleName -> Maybe HomeModInfo #
UnitEnvGraph
newtype UnitEnvGraph v #
Constructors
UnitEnvGraph | |
Fields |
Instances
type UnitEnvGraphKey = UnitId #
unitEnv_insert :: UnitEnvGraphKey -> v -> UnitEnvGraph v -> UnitEnvGraph v #
unitEnv_delete :: UnitEnvGraphKey -> UnitEnvGraph v -> UnitEnvGraph v #
unitEnv_adjust :: (v -> v) -> UnitEnvGraphKey -> UnitEnvGraph v -> UnitEnvGraph v #
unitEnv_new :: Map UnitEnvGraphKey v -> UnitEnvGraph v #
unitEnv_singleton :: UnitEnvGraphKey -> v -> UnitEnvGraph v #
unitEnv_map :: (v -> v) -> UnitEnvGraph v -> UnitEnvGraph v #
unitEnv_member :: UnitEnvGraphKey -> UnitEnvGraph v -> Bool #
unitEnv_lookup_maybe :: UnitEnvGraphKey -> UnitEnvGraph v -> Maybe v #
unitEnv_lookup :: UnitEnvGraphKey -> UnitEnvGraph v -> v #
unitEnv_keys :: UnitEnvGraph v -> Set UnitEnvGraphKey #
unitEnv_elts :: UnitEnvGraph v -> [(UnitEnvGraphKey, v)] #
unitEnv_foldWithKey :: (b -> UnitEnvGraphKey -> a -> b) -> b -> UnitEnvGraph a -> b #
unitEnv_union :: (a -> a -> a) -> UnitEnvGraph a -> UnitEnvGraph a -> UnitEnvGraph a #
unitEnv_mapWithKey :: (UnitEnvGraphKey -> v -> b) -> UnitEnvGraph v -> UnitEnvGraph b #
Invariants
Preload units info
preloadUnitsInfo :: UnitEnv -> MaybeErr UnitErr [UnitInfo] #
Lookup UnitInfo
for every preload unit from the UnitState and for every
unit used to instantiate the home unit.
preloadUnitsInfo' :: UnitEnv -> [UnitId] -> MaybeErr UnitErr [UnitInfo] #
Lookup UnitInfo
for every preload unit from the UnitState, for every unit
used to instantiate the home unit, and for every unit explicitly passed in
the given list of UnitId.
Home Module functions
isUnitEnvInstalledModule :: UnitEnv -> InstalledModule -> Bool #
Test if the module comes from the home unit