Fix kind inference for data types. Again.
This patch fixes several aspects of kind inference for data type declarations, especially data /instance/ declarations Specifically 1. In kcConDecls/kcConDecl make it clear that the tc_res_kind argument is only used in the H98 case; and in that case there is no result kind signature; and hence no need for the disgusting splitPiTys in kcConDecls (now thankfully gone). The GADT case is a bit different to before, and much nicer. This is what fixes #18891. See Note [kcConDecls: kind-checking data type decls] 2. Do not look at the constructor decls of a data/newtype instance in tcDataFamInstanceHeader. See GHC.Tc.TyCl.Instance Note [Kind inference for data family instances]. This was a new realisation that arose when doing (1) This causes a few knock-on effects in the tests suite, because we require more information than before in the instance /header/. New user-manual material about this in "Kind inference in data type declarations" and "Kind inference for data/newtype instance declarations". 3. Minor improvement in kcTyClDecl, combining GADT and H98 cases 4. Fix #14111 and #8707 by allowing the header of a data instance to affect kind inferece for the the data constructor signatures; as described at length in Note [GADT return types] in GHC.Tc.TyCl This led to a modest refactoring of the arguments (and argument order) of tcConDecl/tcConDecls. 5. Fix #19000 by inverting the sense of the test in new_locs in GHC.Tc.Solver.Canonical.canDecomposableTyConAppOK.
Showing
- compiler/GHC/Hs/Extension.hs 3 additions, 3 deletionscompiler/GHC/Hs/Extension.hs
- compiler/GHC/Tc/Gen/HsType.hs 3 additions, 3 deletionscompiler/GHC/Tc/Gen/HsType.hs
- compiler/GHC/Tc/Solver/Canonical.hs 1 addition, 1 deletioncompiler/GHC/Tc/Solver/Canonical.hs
- compiler/GHC/Tc/TyCl.hs 288 additions, 181 deletionscompiler/GHC/Tc/TyCl.hs
- compiler/GHC/Tc/TyCl/Instance.hs 89 additions, 9 deletionscompiler/GHC/Tc/TyCl/Instance.hs
- docs/users_guide/9.2.1-notes.rst 5 additions, 0 deletionsdocs/users_guide/9.2.1-notes.rst
- docs/users_guide/exts/poly_kinds.rst 153 additions, 85 deletionsdocs/users_guide/exts/poly_kinds.rst
- testsuite/tests/dependent/should_fail/T13780a.stderr 1 addition, 1 deletiontestsuite/tests/dependent/should_fail/T13780a.stderr
- testsuite/tests/deriving/should_compile/T11416.hs 4 additions, 2 deletionstestsuite/tests/deriving/should_compile/T11416.hs
- testsuite/tests/deriving/should_compile/T9359.hs 1 addition, 2 deletionstestsuite/tests/deriving/should_compile/T9359.hs
- testsuite/tests/gadt/SynDataRec.hs 16 additions, 0 deletionstestsuite/tests/gadt/SynDataRec.hs
- testsuite/tests/gadt/all.T 1 addition, 0 deletionstestsuite/tests/gadt/all.T
- testsuite/tests/indexed-types/should_compile/T14111.hs 24 additions, 0 deletionstestsuite/tests/indexed-types/should_compile/T14111.hs
- testsuite/tests/indexed-types/should_compile/T8707.hs 11 additions, 0 deletionstestsuite/tests/indexed-types/should_compile/T8707.hs
- testsuite/tests/indexed-types/should_compile/all.T 2 additions, 0 deletionstestsuite/tests/indexed-types/should_compile/all.T
- testsuite/tests/indexed-types/should_fail/T8368.stderr 4 additions, 5 deletionstestsuite/tests/indexed-types/should_fail/T8368.stderr
- testsuite/tests/indexed-types/should_fail/T8368a.stderr 6 additions, 5 deletionstestsuite/tests/indexed-types/should_fail/T8368a.stderr
- testsuite/tests/patsyn/should_fail/T15685.stderr 5 additions, 5 deletionstestsuite/tests/patsyn/should_fail/T15685.stderr
- testsuite/tests/polykinds/T13659.stderr 4 additions, 4 deletionstestsuite/tests/polykinds/T13659.stderr
- testsuite/tests/polykinds/T16221a.stderr 2 additions, 2 deletionstestsuite/tests/polykinds/T16221a.stderr
Loading
Please register or sign in to comment