| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
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