[Git][ghc/ghc][wip/T22474] 12 commits: Big TcLclEnv and CtLoc refactoring
Jaro Reinders (@Noughtmare)
gitlab at gitlab.haskell.org
Wed Jun 7 12:50:07 UTC 2023
Jaro Reinders pushed to branch wip/T22474 at Glasgow Haskell Compiler / GHC
Commits:
7cd8a61e by Matthew Pickering at 2023-06-05T11:46:23+01:00
Big TcLclEnv and CtLoc refactoring
The overall goal of this refactoring is to reduce the dependency
footprint of the parser and syntax tree. Good reasons include:
- Better module graph parallelisability
- Make it easier to migrate error messages without introducing module loops
- Philosophically, there's not reason for the AST to depend on half the
compiler.
One of the key edges which added this dependency was
> GHC.Hs.Expr -> GHC.Tc.Types (TcLclEnv)
As this in turn depending on TcM which depends on HscEnv and so on.
Therefore the goal of this patch is to move `TcLclEnv` out of
`GHC.Tc.Types` so that `GHC.Hs.Expr` can import TcLclEnv without
incurring a huge dependency chain.
The changes in this patch are:
* Move TcLclEnv from GHC.Tc.Types to GHC.Tc.Types.LclEnv
* Create new smaller modules for the types used in TcLclEnv
New Modules:
- GHC.Tc.Types.ErrCtxt
- GHC.Tc.Types.BasicTypes
- GHC.Tc.Types.TH
- GHC.Tc.Types.LclEnv
- GHC.Tc.Types.CtLocEnv
- GHC.Tc.Errors.Types.PromotionErr
Removed Boot File:
- {-# SOURCE #-} GHC.Tc.Types
* Introduce TcLclCtxt, the part of the TcLclEnv which doesn't
participate in restoreLclEnv.
* Replace TcLclEnv in CtLoc with specific CtLocEnv which is defined in
GHC.Tc.Types.CtLocEnv. Use CtLocEnv in Implic and CtLoc to record the
location of the implication and constraint.
By splitting up TcLclEnv from GHC.Tc.Types we allow GHC.Hs.Expr to no
longer depend on the TcM monad and all that entails.
Fixes #23389 #23409
- - - - -
3d8d39d1 by Matthew Pickering at 2023-06-05T11:46:23+01:00
Remove dependency of GHC.Tc.Utils.TcType on GHC.Driver.Session
This removes the usage of DynFlags from Tc.Utils.TcType so that it no
longer depends on GHC.Driver.Session. In general we don't want anything
which is a dependency of Language.Haskell.Syntax to depend on
GHC.Driver.Session and removing this edge gets us closer to that goal.
- - - - -
18db5ada by Matthew Pickering at 2023-06-05T11:46:23+01:00
Move isIrrefutableHsPat to GHC.Rename.Utils and rename to isIrrefutableHsPatRn
This removes edge from GHC.Hs.Pat to GHC.Driver.Session, which makes
Language.Haskell.Syntax end up depending on GHC.Driver.Session.
- - - - -
12919dd5 by Matthew Pickering at 2023-06-05T11:46:23+01:00
Remove dependency of GHC.Tc.Types.Constraint on GHC.Driver.Session
- - - - -
eb852371 by Matthew Pickering at 2023-06-05T11:46:24+01:00
hole fit plugins: Split definition into own module
The hole fit plugins are defined in terms of TcM, a type we want to
avoid depending on from `GHC.Tc.Errors.Types`. By moving it into its own
module we can remove this dependency. It also simplifies the necessary
boot file.
- - - - -
9e5246d7 by Matthew Pickering at 2023-06-05T11:46:24+01:00
Move GHC.Core.Opt.CallerCC Types into separate module
This allows `GHC.Driver.DynFlags` to depend on these types without
depending on CoreM and hence the entire simplifier pipeline.
We can also remove a hs-boot file with this change.
- - - - -
52d6a7d7 by Matthew Pickering at 2023-06-05T11:46:24+01:00
Remove unecessary SOURCE import
- - - - -
698d160c by Matthew Pickering at 2023-06-05T11:46:24+01:00
testsuite: Accept new output for CountDepsAst and CountDepsParser tests
These are in a separate commit as the improvement to these tests is the
cumulative effect of the previous set of patches rather than just the
responsibility of the last one in the patchset.
- - - - -
58ccf02e by sheaf at 2023-06-05T16:00:47-04:00
TTG: only allow VarBind at GhcTc
The VarBind constructor of HsBind is only used at the GhcTc stage.
This commit makes that explicit by setting the extension field of
VarBind to be DataConCantHappen at all other stages.
This allows us to delete a dead code path in GHC.HsToCore.Quote.rep_bind,
and remove some panics.
- - - - -
54b83253 by Matthew Craven at 2023-06-06T12:59:25-04:00
Generate Addr# access ops programmatically
The existing utils/genprimopcode/gen_bytearray_ops.py was
relocated and extended for this purpose. Additionally, hadrian
now knows about this script and uses it when generating primops.txt
- - - - -
ecadbc7e by Matthew Pickering at 2023-06-06T13:00:01-04:00
ghcup-metadata: Only add Nightly tag when replacing LatestNightly
Previously we were always adding the Nightly tag, but this led to all
the previous builds getting an increasing number of nightly tags over
time. Now we just add it once, when we remove the LatestNightly tag.
- - - - -
63430756 by Jaro Reinders at 2023-06-07T14:49:52+02:00
Fix #22474
- - - - -
30 changed files:
- .gitlab/rel_eng/mk-ghcup-metadata/mk_ghcup_metadata.py
- − compiler/GHC/Builtin/bytearray-ops.txt.pp
- utils/genprimopcode/gen_bytearray_ops.py → compiler/GHC/Builtin/gen_bytearray_addr_access_ops.py
- compiler/GHC/Builtin/primops.txt.pp
- compiler/GHC/Core/Opt/CallerCC.hs
- − compiler/GHC/Core/Opt/CallerCC.hs-boot
- + compiler/GHC/Core/Opt/CallerCC/Types.hs
- compiler/GHC/Driver/DynFlags.hs
- compiler/GHC/Driver/Plugins.hs
- compiler/GHC/Hs/Binds.hs
- compiler/GHC/Hs/Expr.hs
- compiler/GHC/Hs/Pat.hs
- compiler/GHC/Hs/Utils.hs
- compiler/GHC/HsToCore/Quote.hs
- compiler/GHC/Iface/Errors/Types.hs
- compiler/GHC/Plugins.hs
- compiler/GHC/Rename/Bind.hs
- compiler/GHC/Rename/Env.hs
- compiler/GHC/Rename/Expr.hs
- compiler/GHC/Rename/Names.hs
- compiler/GHC/Rename/Utils.hs
- compiler/GHC/Tc/Errors.hs
- compiler/GHC/Tc/Errors/Hole.hs
- compiler/GHC/Tc/Errors/Hole/FitTypes.hs
- − compiler/GHC/Tc/Errors/Hole/FitTypes.hs-boot
- + compiler/GHC/Tc/Errors/Hole/Plugin.hs
- + compiler/GHC/Tc/Errors/Hole/Plugin.hs-boot
- compiler/GHC/Tc/Errors/Ppr.hs
- compiler/GHC/Tc/Errors/Types.hs
- + compiler/GHC/Tc/Errors/Types/PromotionErr.hs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/bc89925013cc154da9b7f39d5a017d6c26133f0e...63430756743ee80a6bad029920edf73c92fc22b9
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/bc89925013cc154da9b7f39d5a017d6c26133f0e...63430756743ee80a6bad029920edf73c92fc22b9
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20230607/28a80e9b/attachment.html>
More information about the ghc-commits
mailing list