<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>



<style>img {
max-width: 100%; height: auto;
}
</style>
</head>
<body>
<div class="content">

<h3>
Simon Peyton Jones pushed to branch wip/T18891
at <a href="https://gitlab.haskell.org/ghc/ghc">Glasgow Haskell Compiler / GHC</a>
</h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1a9e9996e17f73b40fcdfc18f0a3d4dd39c2f187">1a9e9996</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-12-04T22:06:53+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">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.
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#576dff4e64fa03683ffc5dcdd58284acdd70bc8e">
compiler/GHC/Hs/Extension.hs
</a>
</li>
<li class="file-stats">
<a href="#9355bef855426caf5f526925edf351b20f9a86c4">
compiler/GHC/Tc/Gen/HsType.hs
</a>
</li>
<li class="file-stats">
<a href="#f018e77421f495c6f75733fee4a511cfe57bebe8">
compiler/GHC/Tc/Solver/Canonical.hs
</a>
</li>
<li class="file-stats">
<a href="#83d23a46bb6cdc8b1edc16f1fd2c8f5c53e2c9ca">
compiler/GHC/Tc/TyCl.hs
</a>
</li>
<li class="file-stats">
<a href="#e63425e031ffe9350ee6b1687e506aaea75d11e1">
compiler/GHC/Tc/TyCl/Instance.hs
</a>
</li>
<li class="file-stats">
<a href="#d87dfc77856eeaef6134e28336290ddcbcf18d7d">
docs/users_guide/9.2.1-notes.rst
</a>
</li>
<li class="file-stats">
<a href="#fa050e1532c92b2ffc94692d8b368f3fefa3196d">
docs/users_guide/exts/poly_kinds.rst
</a>
</li>
<li class="file-stats">
<a href="#05e2feaa7ccbd427e12a90d25808ead5ec587c63">
testsuite/tests/dependent/should_fail/T13780a.stderr
</a>
</li>
<li class="file-stats">
<a href="#526bbf30531cad446c3194aa829668c9c4650b0a">
testsuite/tests/deriving/should_compile/T11416.hs
</a>
</li>
<li class="file-stats">
<a href="#5b83e99d7c85673bbd8af817bf225cf3695013b9">
testsuite/tests/deriving/should_compile/T9359.hs
</a>
</li>
<li class="file-stats">
<a href="#94292f469539d175687337f47cccb30eaba2e6fc">
<span class="new-file">
+
testsuite/tests/gadt/SynDataRec.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#c68bb340f8f227ab4ac9922422ce0177433e1dfc">
testsuite/tests/gadt/all.T
</a>
</li>
<li class="file-stats">
<a href="#f40c9b04fcb3dedd30e8d1d111028fd38a3bd533">
<span class="new-file">
+
testsuite/tests/indexed-types/should_compile/T14111.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#ebaa39285a49455fd932d452d44b589c7d50f8f3">
<span class="new-file">
+
testsuite/tests/indexed-types/should_compile/T8707.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#58b9bc2ffb1c7d7b545e6aada524a5d53266e95e">
testsuite/tests/indexed-types/should_compile/all.T
</a>
</li>
<li class="file-stats">
<a href="#9ce3533e3d2bdc2ed2d290e31021207c39fd5729">
testsuite/tests/indexed-types/should_fail/T8368.stderr
</a>
</li>
<li class="file-stats">
<a href="#022292799466b9b31e4522069903c5b0fac15e9c">
testsuite/tests/indexed-types/should_fail/T8368a.stderr
</a>
</li>
<li class="file-stats">
<a href="#bc4ffdf271cd138b7e3e72937084080b70f4e95b">
testsuite/tests/patsyn/should_fail/T15685.stderr
</a>
</li>
<li class="file-stats">
<a href="#9cf9e43ad6ba49c6f9ba05365e796e4358376763">
testsuite/tests/polykinds/T13659.stderr
</a>
</li>
<li class="file-stats">
<a href="#4af4eaeded9c126e6a4ee186db90f5b886b80799">
testsuite/tests/polykinds/T16221a.stderr
</a>
</li>
<li class="file-stats">
<a href="#5c74fb2bdbb2042694ffd2e618b0efb408c68d8e">
testsuite/tests/th/T11145.stderr
</a>
</li>
<li class="file-stats">
<a href="#963e82a98233f65b20b6eed015bb2bd423433593">
testsuite/tests/th/T9692.hs
</a>
</li>
<li class="file-stats">
<a href="#dac489fd9971f93cf5f4c1655e3ab898e190a541">
<span class="new-file">
+
testsuite/tests/typecheck/should_compile/T18891.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#460a0a2288242ede875741a395ec8673b7a822d0">
testsuite/tests/typecheck/should_compile/UnliftedNewtypesUnassociatedFamily.hs
</a>
</li>
<li class="file-stats">
<a href="#8a9c9b7ef8854c111f962e63af9191c2300a6382">
testsuite/tests/typecheck/should_compile/UnliftedNewtypesUnifySig.hs
</a>
</li>
<li class="file-stats">
<a href="#34fe7bf0e6fbf60effb28393399ba68666593909">
testsuite/tests/typecheck/should_compile/all.T
</a>
</li>
<li class="file-stats">
<a href="#4968e845853db814d0441fbf636d7b942d6beca2">
<span class="new-file">
+
testsuite/tests/typecheck/should_fail/T18891a.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#00704c21d708b5b0eae6c68bd8d6a0559be1c753">
<span class="new-file">
+
testsuite/tests/typecheck/should_fail/T18891a.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#9d34b8cddaf28088631549895343f495bc16ad14">
testsuite/tests/typecheck/should_fail/UnliftedNewtypesFamilyKindFail2.stderr
</a>
</li>
<li class="file-stats">
<a href="#b66ac8a3829a9ca3a4bbfecd10731b973b1e5f1a">
<span class="new-file">
+
testsuite/tests/typecheck/should_fail/UnliftedNewtypesUnassociatedFamilyFail.hs
</span>
</a>
</li>
</ul>
<h5>The diff was not included because it is too large.</h5>

</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #666;">

<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1a9e9996e17f73b40fcdfc18f0a3d4dd39c2f187">View it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.haskell.org.
If you'd like to receive fewer emails, you can
adjust your notification settings.
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Commit","url":"https://gitlab.haskell.org/ghc/ghc/-/commit/1a9e9996e17f73b40fcdfc18f0a3d4dd39c2f187"}}</script>


</p>
</div>
</body>
</html>