summaryrefslogtreecommitdiff
path: root/compiler/GHC/Unit.hs
Commit message (Collapse)AuthorAgeFilesLines
* Lint the compiler for extraneous LANGUAGE pragmasHécate2020-10-101-2/+0
|
* DynFlags: add UnfoldingOpts and SimpleOptsSylvain Henry2020-09-091-1/+2
| | | | | Milestone: after this patch, we only use 'unsafeGlobalDynFlags' for the state hack and for debug in Outputable.
* Refactor UnitId pretty-printingSylvain Henry2020-08-261-32/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we pretty-print a UnitId for the user, we try to map it back to its origin package name, version and component to print "package-version:component" instead of some hash. The UnitId type doesn't carry these information, so we have to look into a UnitState to find them. This is why the Outputable instance of UnitId used `sdocWithDynFlags` in order to access the `unitState` field of DynFlags. This is wrong for several reasons: 1. The DynFlags are accessed when the message is printed, not when it is generated. So we could imagine that the unitState may have changed in-between. Especially if we want to allow unit unloading. 2. We want GHC to support several independent sessions at once, hence several UnitState. The current approach supposes there is a unique UnitState as a UnitId doesn't indicate which UnitState to use. See the Note [Pretty-printing UnitId] in GHC.Unit for the new approach implemented by this patch. One step closer to remove `sdocDynFlags` field from `SDocContext` (#10143). Fix #18124. Also fix some Backpack code to use SDoc instead of String.
* Add HomeUnit typeSylvain Henry2020-08-131-0/+2
| | | | | | | | | | | | | | | | | | | | | | | Since Backpack the "home unit" is much more involved than what it was before (just an identifier obtained with `-this-unit-id`). Now it is used in conjunction with `-component-id` and `-instantiated-with` to configure module instantiations and to detect if we are type-checking an indefinite unit or compiling a definite one. This patch introduces a new HomeUnit datatype which is much easier to understand. Moreover to make GHC support several packages in the same instances, we will need to handle several HomeUnits so having a dedicated (documented) type is helpful. Finally in #14335 we will also need to handle the case where we have no HomeUnit at all because we are only loading existing interfaces for plugins which live in a different space compared to units used to produce target code. Several functions will have to be refactored to accept "Maybe HomeUnit" parameters instead of implicitly querying the HomeUnit fields in DynFlags. Having a dedicated type will make this easier. Bump haddock submodule
* Remove ClosureUnitInfoMapSylvain Henry2020-06-131-2/+0
|
* Enhance Note [About units] for BackpackSylvain Henry2020-05-261-234/+331
|
* Unit: split and rename modulesSylvain Henry2020-04-301-0/+257
Introduce GHC.Unit.* hierarchy for everything concerning units, packages and modules. Update Haddock submodule