[Git][ghc/ghc][wip/T16762] 9 commits: Replace HsImplicitBndrs with HsOuterTyVarBndrs
Ryan Scott
gitlab at gitlab.haskell.org
Mon Oct 5 01:29:32 UTC 2020
Ryan Scott pushed to branch wip/T16762 at Glasgow Haskell Compiler / GHC
Commits:
4d4db316 by Ryan Scott at 2020-10-04T21:28:57-04:00
Replace HsImplicitBndrs with HsOuterTyVarBndrs
This refactors the GHC AST to remove `HsImplicitBndrs` and replace it with
`HsOuterTyVarBndrs`, a type which records whether the outermost quantification
in a type is explicit (i.e., with an outermost, invisible `forall`) or
implicit. As a result of this refactoring, it is now evident in the AST where
the `forall`-or-nothing rule applies: it's all the places that use
`HsOuterTyVarBndrs`. See the revamped `Note [forall-or-nothing rule]` in
`GHC.Hs.Type` (previously in `GHC.Rename.HsType`).
Moreover, the places where `ScopedTypeVariables` brings lexically scoped type
variables into scope are a subset of the places that adhere to the
`forall`-or-nothing rule, so this also makes places that interact with
`ScopedTypeVariables` easier to find. See the revamped
`Note [Lexically scoped type variables]` in `GHC.Hs.Type` (previously in
`GHC.Tc.Gen.Sig`).
`HsOuterTyVarBndrs` are used in type signatures (see `HsOuterSigTyVarBndrs`)
and type family equations (see `HsOuterFamEqnTyVarBndrs`). The main difference
between the former and the latter is that the former cares about specificity
but the latter does not.
There are a number of knock-on consequences:
* There is now a dedicated `HsSigType` type, which is the combination of
`HsOuterSigTyVarBndrs` and `HsType`. `LHsSigType` is now an alias for an
`XRec` of `HsSigType`.
* TODO RGS: Describe typechecker changes
Fixes #16762. Bumps the Haddock submodule.
Co-authored-by: Simon Peyton Jones <simonpj at microsoft.com>
- - - - -
fb083404 by Simon Peyton Jones at 2020-10-04T21:28:57-04:00
Wibbbles
- - - - -
5131aaf8 by Simon Peyton Jones at 2020-10-04T21:28:57-04:00
More wibbles
- - - - -
c5057c0f by Simon Peyton Jones at 2020-10-04T21:28:57-04:00
More wibbles
- - - - -
0185828e by Simon Peyton Jones at 2020-10-04T21:28:57-04:00
More wibbles --- getting there
- - - - -
bd5642ea by Ryan Scott at 2020-10-04T21:28:57-04:00
Push through some Haddock changes, disable warnings in GHC.Iface.Ext.Ast for now
- - - - -
d253231f by Simon Peyton Jones at 2020-10-04T21:28:57-04:00
More wibbles
- - - - -
96b211a7 by Ryan Scott at 2020-10-04T21:28:57-04:00
Use TTG in HsOuterTyVarBndrs
- - - - -
f028c81f by Ryan Scott at 2020-10-04T21:28:57-04:00
Add some documentation, minor code cleanup
- - - - -
20 changed files:
- compiler/GHC/Hs/Decls.hs
- compiler/GHC/Hs/Extension.hs
- compiler/GHC/Hs/Instances.hs
- compiler/GHC/Hs/Type.hs
- compiler/GHC/Hs/Utils.hs
- compiler/GHC/HsToCore/Docs.hs
- compiler/GHC/HsToCore/Quote.hs
- compiler/GHC/Iface/Ext/Ast.hs
- compiler/GHC/Parser.y
- compiler/GHC/Parser/PostProcess.hs
- compiler/GHC/Parser/PostProcess/Haddock.hs
- compiler/GHC/Rename/HsType.hs
- compiler/GHC/Rename/Module.hs
- compiler/GHC/Rename/Names.hs
- compiler/GHC/Rename/Utils.hs
- compiler/GHC/Tc/Deriv.hs
- compiler/GHC/Tc/Deriv/Generate.hs
- compiler/GHC/Tc/Errors.hs
- compiler/GHC/Tc/Gen/Bind.hs
- compiler/GHC/Tc/Gen/Head.hs
The diff was not included because it is too large.
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/62f6bf5ccfa499a9b2f2666f7a81c8df64bebebb...f028c81fcfc94ea37bfedc586f3501ad24caeb3f
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/62f6bf5ccfa499a9b2f2666f7a81c8df64bebebb...f028c81fcfc94ea37bfedc586f3501ad24caeb3f
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/20201004/5adcbb22/attachment-0001.html>
More information about the ghc-commits
mailing list