Use HsTyPats in associated type family defaults
Associated type family default declarations behave strangely in a couple of ways: 1. If one tries to bind the type variables with an explicit `forall`, the `forall`'d part will simply be ignored. (#16110) 2. One cannot use visible kind application syntax on the left-hand sides of associated default equations, unlike every other form of type family equation. (#16356) Both of these issues have a common solution. Instead of using `LHsQTyVars` to represent the left-hand side arguments of an associated default equation, we instead use `HsTyPats`, which is what other forms of type family equations use. In particular, here are some highlights of this patch: * `FamEqn` is no longer parameterized by a `pats` type variable, as the `feqn_pats` field is now always `HsTyPats`. * The new design for `FamEqn` in chronicled in `Note [Type family instance declarations in HsSyn]`. * `TyFamDefltEqn` now becomes the same thing as `TyFamInstEqn`. This means that many of `TyFamDefltEqn`'s code paths can now reuse the code paths for `TyFamInstEqn`, resulting in substantial simplifications to various parts of the code dealing with associated type family defaults. Fixes #16110 and #16356.
Showing
- compiler/deSugar/DsMeta.hs 3 additions, 30 deletionscompiler/deSugar/DsMeta.hs
- compiler/hieFile/HieAst.hs 6 additions, 15 deletionscompiler/hieFile/HieAst.hs
- compiler/hsSyn/Convert.hs 2 additions, 9 deletionscompiler/hsSyn/Convert.hs
- compiler/hsSyn/HsDecls.hs 41 additions, 56 deletionscompiler/hsSyn/HsDecls.hs
- compiler/hsSyn/HsExtension.hs 5 additions, 5 deletionscompiler/hsSyn/HsExtension.hs
- compiler/hsSyn/HsInstances.hs 4 additions, 4 deletionscompiler/hsSyn/HsInstances.hs
- compiler/parser/RdrHsSyn.hs 19 additions, 59 deletionscompiler/parser/RdrHsSyn.hs
- compiler/rename/RnSource.hs 47 additions, 51 deletionscompiler/rename/RnSource.hs
- compiler/typecheck/TcTyClsDecls.hs 68 additions, 73 deletionscompiler/typecheck/TcTyClsDecls.hs
- docs/users_guide/8.10.1-notes.rst 29 additions, 0 deletionsdocs/users_guide/8.10.1-notes.rst
- docs/users_guide/glasgow_exts.rst 39 additions, 13 deletionsdocs/users_guide/glasgow_exts.rst
- testsuite/tests/indexed-types/should_compile/T16110_Compile.hs 13 additions, 0 deletions...uite/tests/indexed-types/should_compile/T16110_Compile.hs
- testsuite/tests/indexed-types/should_compile/T16356_Compile1.hs 25 additions, 0 deletions...ite/tests/indexed-types/should_compile/T16356_Compile1.hs
- testsuite/tests/indexed-types/should_compile/T16356_Compile2.hs 16 additions, 0 deletions...ite/tests/indexed-types/should_compile/T16356_Compile2.hs
- testsuite/tests/indexed-types/should_compile/T16356_Compile2.stderr 18 additions, 0 deletions...tests/indexed-types/should_compile/T16356_Compile2.stderr
- testsuite/tests/indexed-types/should_compile/all.T 3 additions, 0 deletionstestsuite/tests/indexed-types/should_compile/all.T
- testsuite/tests/indexed-types/should_fail/SimpleFail4.stderr 6 additions, 5 deletionstestsuite/tests/indexed-types/should_fail/SimpleFail4.stderr
- testsuite/tests/indexed-types/should_fail/T16110_Fail1.hs 19 additions, 0 deletionstestsuite/tests/indexed-types/should_fail/T16110_Fail1.hs
- testsuite/tests/indexed-types/should_fail/T16110_Fail1.stderr 18 additions, 0 deletions...suite/tests/indexed-types/should_fail/T16110_Fail1.stderr
- testsuite/tests/indexed-types/should_fail/T16110_Fail2.hs 9 additions, 0 deletionstestsuite/tests/indexed-types/should_fail/T16110_Fail2.hs
Loading
Please register or sign in to comment