<!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>
 Marge Bot pushed to branch master
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/6efe04dee3f4c584e0cd043b8424718f0791d1be">6efe04de</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2019-05-22T20:56:01Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">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.
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#cb94ea134d6d52fab318831e397d2a5c789f2ef3">
compiler/deSugar/DsMeta.hs
</a>
</li>
<li class="file-stats">
<a href="#7f924eb82ea52b493e50fc467c301adb6a0eaf32">
compiler/hieFile/HieAst.hs
</a>
</li>
<li class="file-stats">
<a href="#8edc819d4b7e02c1439ca8bb128a773a9d2ab2cd">
compiler/hsSyn/Convert.hs
</a>
</li>
<li class="file-stats">
<a href="#0db90e3d6e6150a586bbd58f75f250c3c71766f9">
compiler/hsSyn/HsDecls.hs
</a>
</li>
<li class="file-stats">
<a href="#3ec3774412294d7ceaaa0572f116dc7c911d3f6d">
compiler/hsSyn/HsExtension.hs
</a>
</li>
<li class="file-stats">
<a href="#e7673c6d90538d1c5ad8b53d152421a616776073">
compiler/hsSyn/HsInstances.hs
</a>
</li>
<li class="file-stats">
<a href="#f68eb03961d8e370e8d3f41bd51ea01fd168779e">
compiler/parser/RdrHsSyn.hs
</a>
</li>
<li class="file-stats">
<a href="#a55612b2faf1041b010514ceb222ddf75c15a326">
compiler/rename/RnSource.hs
</a>
</li>
<li class="file-stats">
<a href="#bdfa0cc139f61d1236abc1598c5d684b43c357f9">
compiler/typecheck/TcTyClsDecls.hs
</a>
</li>
<li class="file-stats">
<a href="#d6904e295957d55c64f4949aa3b54695dd57dd76">
docs/users_guide/8.10.1-notes.rst
</a>
</li>
<li class="file-stats">
<a href="#40d93f06cdb95d1c98a6b3832d0153e59839d832">
docs/users_guide/glasgow_exts.rst
</a>
</li>
<li class="file-stats">
<a href="#e39cb29d5b051429fcb602a29dcc7a128dffc33b">
<span class="new-file">
+
testsuite/tests/indexed-types/should_compile/T16110_Compile.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#ba09be2eb0877388006eee3b1a1d6de6a2696a9d">
<span class="new-file">
+
testsuite/tests/indexed-types/should_compile/T16356_Compile1.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#7501ce7be6a64926f7bcd69ededd971613f403a0">
<span class="new-file">
+
testsuite/tests/indexed-types/should_compile/T16356_Compile2.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#416260ec88bfaa6b764cd4b71a7e18a526cfd50f">
<span class="new-file">
+
testsuite/tests/indexed-types/should_compile/T16356_Compile2.stderr
</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="#f5b2262300e77de7b0dbf5f0bd21be0a48df6f4f">
testsuite/tests/indexed-types/should_fail/SimpleFail4.stderr
</a>
</li>
<li class="file-stats">
<a href="#80b67138b7468e131ba05e0d003187d49c2934f5">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16110_Fail1.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#fdff57822dab8fbf612d16b700ec49a36baa8771">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16110_Fail1.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#3bcf24087c2fc289e519bf3ffc17cc66dc1a78ef">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16110_Fail2.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#a605ff400901085182447c89828b2de1a5dbb0f6">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16110_Fail2.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#b52df7f375d92977bf6a5ae11408dc79921ff7d5">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16110_Fail3.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#e88311a0cc719a5d07f737b9fa0a0b5bd6b4e938">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16110_Fail3.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#f2bb22a6b886b57bac35885138c9f0ac303c363c">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16356_Fail1.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#0509b890ea835e45302350905e2fbc28d868c7d5">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16356_Fail1.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#4ea330aab20663dff78311754aee2334d95fe67c">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16356_Fail2.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#8029ad8879e2eade66ead20902b7f97ae4966d6d">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16356_Fail2.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#b16504e4838fcc101b01d86fcc79506277bd2a5c">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16356_Fail3.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#4039e10fcaa37321c10108035447a091fc308814">
<span class="new-file">
+
testsuite/tests/indexed-types/should_fail/T16356_Fail3.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#3e0457789f3266c805563b6a84cef1dfb08aed7e">
testsuite/tests/indexed-types/should_fail/all.T
</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: #777;">

<br>
<a href="https://gitlab.haskell.org/ghc/ghc/commit/6efe04dee3f4c584e0cd043b8424718f0791d1be">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/6efe04dee3f4c584e0cd043b8424718f0791d1be"}}</script>

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