[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