summaryrefslogtreecommitdiff
path: root/utils/haddock
diff options
context:
space:
mode:
authorRyan Scott <ryan.gl.scott@gmail.com>2020-11-05 11:28:53 -0500
committerRyan Scott <ryan.gl.scott@gmail.com>2020-12-16 16:57:28 -0500
commit3f4353cfc7951349648d0047eece89c5d773e315 (patch)
treeaa6b687ce5cbdbf327fe109f8542c757b6157a45 /utils/haddock
parentb58cb63afd3353beb3a6e11ba7fa557fdedb8941 (diff)
downloadhaskell-wip/T18914.tar.gz
Use HsOuterExplicit in instance sigs in deriving-generated codewip/T18914
Issue #18914 revealed that `GeneralizedNewtypeDeriving` would generate code that mentions unbound type variables, which is dangerously fragile. The problem (and fix) is described in the new `Wrinkle: Use HsOuterExplicit` in `Note [GND and QuantifiedConstraints]`. The gist of it: make sure to put the top-level `forall`s in `deriving`-generated instance signatures in an `HsOuterExplicit` to ensure that they scope over the bodies of methods correctly. A side effect of this process is that it will expand any type synonyms in the instance signature, which will surface any `forall`s that are hidden underneath type synonyms (such as in the test case for #18914). While I was in town, I also performed some maintenance on `NewHsTypeX`, which powers `GeneralizedNewtypeDeriving`: * I renamed `NewHsTypeX` to `HsCoreTy`, which more accurately describes its intended purpose (#15706). I also made `HsCoreTy` a type synonym instead of a newtype, as making it a distinct data type wasn't buying us much. * To make sure that mistakes similar to #18914 do not occur later, I added an additional validity check when renaming `HsCoreTy`s that complains if an `HsCoreTy`s contains an out-of-scope type variable. See the new `Note [Renaming HsCoreTys]` in `GHC.Rename.HsType` for the details. Fixes #15706. Fixes #18914. Bumps the `haddock` submodule.
Diffstat (limited to 'utils/haddock')
m---------utils/haddock0
1 files changed, 0 insertions, 0 deletions
diff --git a/utils/haddock b/utils/haddock
-Subproject 059acb11d6134ee0d896bcf73c870958557a390
+Subproject c3b276d94e207717731512d1e1f8b59b729b653