<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en" style='--code-editor-font: var(--default-mono-font, "Menlo"), DejaVu Sans Mono, Liberation Mono, Consolas, Ubuntu Mono, Courier New, andale mono, lucida console, monospace;'>
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>

<style data-premailer="ignore" type="text/css">
a { color: #1068bf; }
</style>


<style>img {
max-width: 100%; height: auto;
}
body {
font-size: 0.875rem;
}
body {
-webkit-text-shadow: rgba(255,255,255,0.01) 0 0 1px;
}
body {
font-family: var(--default-regular-font, -apple-system),BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; font-size: inherit;
}
</style>
</head>
<body style='font-size: inherit; -webkit-text-shadow: rgba(255,255,255,0.01) 0 0 1px; font-family: var(--default-regular-font, -apple-system),BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";'>
<div class="content">

<h3 style="margin-top: 20px; margin-bottom: 10px;">
Marge Bot pushed to branch wip/marge_bot_batch_merge_job at <a href="https://gitlab.haskell.org/ghc/ghc">Glasgow Haskell Compiler / GHC</a>
</h3>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
Commits:
</h4>
<ul>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0158c5f10869f567091c4f0cd9b127c0dc5cc413">0158c5f1</a></strong>
<div>
<span> by Ryan Scott </span> <i> at 2023-04-17T18:43:27-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "Menlo"),"DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>validDerivPred: Reject exotic constraints in IrredPreds

This brings the `IrredPred` case in sync with the treatment of `ClassPred`s as
described in `Note [Valid 'deriving' predicate]` in `GHC.Tc.Validity`. Namely,
we should reject `IrredPred`s that are inferred from `deriving` clauses whose
arguments contain other type constructors, as described in `(VD2) Reject exotic
constraints` of that Note.  This has the nice property that `deriving` clauses
whose inferred instance context mention `TypeError` will now emit the type
error in the resulting error message, which better matches existing intuitions
about how `TypeError` should work.

While I was in town, I noticed that much of `Note [Valid 'deriving' predicate]`
was duplicated in a separate `Note [Exotic derived instance contexts]` in
`GHC.Tc.Deriv.Infer`. I decided to fold the latter Note into the former so that
there is a single authority on describing the conditions under which an
inferred `deriving` constraint can be considered valid.

This changes the behavior of `deriving` in a way that existing code might
break, so I have made a mention of this in the GHC User's Guide. It seems very,
very unlikely that much code is relying on this strange behavior, however, and
even if there is, there is a clear, backwards-compatible migration path using
`StandaloneDeriving`.

Fixes #22696.
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1036481824fed7f8d5c9f70816b3dadd22098e42">10364818</a></strong>
<div>
<span> by Krzysztof Gogolewski </span> <i> at 2023-04-17T18:44:03-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "Menlo"),"DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Misc cleanup

- Use dedicated list functions
- Make cloneBndrs and cloneRecIdBndrs monadic
- Fix invalid haddock comments in libraries/base
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a8bd4732e463fd322243c348e033a46c3443284f">a8bd4732</a></strong>
<div>
<span> by Matthew Pickering </span> <i> at 2023-04-18T08:20:49-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "Menlo"),"DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Convert interface file loading errors into proper diagnostics

This patch converts all the errors to do with loading interface files
into proper structured diagnostics.

* DriverMessage: Sometimes in the driver we attempt to load an interface
  file so we embed the IfaceMessage into the DriverMessage.
* TcRnMessage: Most the time we are loading interface files during
  typechecking, so we embed the IfaceMessage

This patch also removes the TcRnInterfaceLookupError constructor which
is superceded by the IfaceMessage, which is now structured compared to
just storing an SDoc before.
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e05b0ee65fde4f220e51365648e8c497b2f2fa8e">e05b0ee6</a></strong>
<div>
<span> by sheaf </span> <i> at 2023-04-18T08:20:54-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "Menlo"),"DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Don't panic in ltPatersonSize

The function GHC.Tc.Utils.TcType.ltPatersonSize would panic when it
encountered a type family on the RHS, as usually these are not allowed
(type families are not allowed on the RHS of class instances or of
quantified constraints). However, it is possible to still encounter
type families on the RHS after doing a bit of constraint solving, as
seen in test case T23171. This could trigger the panic in the call to
ltPatersonSize in GHC.Tc.Solver.Canonical.mk_strict_superclasses, which
is involved in avoiding loopy superclass constraints.

This patch simply changes ltPatersonSize to return "I don't know, because
there's a type family involved" in these cases.

Fixes #23171
</pre>
</li>
</ul>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
30 changed files:
</h4>
<ul>
<li class="file-stats">
<a href="#2bae5947e9412f6deebf4db7dcb89d780913130f">
compiler/GHC/CmmToAsm/X86/CodeGen.hs
</a>
</li>
<li class="file-stats">
<a href="#35cff95f9f44690fc50b44bbe8ac3c554c7d5a5e">
compiler/GHC/Core/Make.hs
</a>
</li>
<li class="file-stats">
<a href="#cc763cdd1967f5d921161a32f64136cfcf0332c5">
compiler/GHC/Core/Opt/SetLevels.hs
</a>
</li>
<li class="file-stats">
<a href="#ab22d7ae4d245581b701367e386d7e886e416e76">
compiler/GHC/Core/Opt/Specialise.hs
</a>
</li>
<li class="file-stats">
<a href="#f4421b4e35592648510c877ecf55b1af2b96dcee">
compiler/GHC/Core/Opt/WorkWrap/Utils.hs
</a>
</li>
<li class="file-stats">
<a href="#708fab0a51bd47227233eda4698e750ff6de66e0">
compiler/GHC/Core/Subst.hs
</a>
</li>
<li class="file-stats">
<a href="#c786816bca5e182a02da23ebd34ff8563b35e55a">
compiler/GHC/Driver/Config/Diagnostic.hs
</a>
</li>
<li class="file-stats">
<a href="#b35d035c7594f0551274a116894567b131e1d5c2">
compiler/GHC/Driver/Config/Tidy.hs
</a>
</li>
<li class="file-stats">
<a href="#2c680115d7e70b54a18c48be02dce2d676eaf4f8">
compiler/GHC/Driver/Errors.hs
</a>
</li>
<li class="file-stats">
<a href="#3177183680205a840465ba6b8d33631394cca2d7">
compiler/GHC/Driver/Errors/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#820a2607941cd6fe77ba25c9a59b3f1ee106bb01">
compiler/GHC/Driver/Errors/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#1dab250036d04cfcf3530f6ff27889f723cc2dda">
compiler/GHC/Driver/Make.hs
</a>
</li>
<li class="file-stats">
<a href="#53557c97f676581665e366694f2931a29d6d76cd">
compiler/GHC/Driver/MakeFile.hs
</a>
</li>
<li class="file-stats">
<a href="#05179f6a260af85dabe0cfb5ed2204da64dadd33">
compiler/GHC/Iface/Errors.hs
</a>
</li>
<li class="file-stats">
<a href="#cd077d8c3df481acea295841f9a5bba46e555fe4">
<span class="new-file">
+
compiler/GHC/Iface/Errors/Ppr.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#b5a1d947a78cef8abda1814a89dc7a5e5d31f3fb">
<span class="new-file">
+
compiler/GHC/Iface/Errors/Types.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#7d51edda4fa76a202cce0bca672ef300249ba8ea">
compiler/GHC/Iface/Load.hs
</a>
</li>
<li class="file-stats">
<a href="#a8e6b17fc507589522323d8dd20d9713e8c06760">
compiler/GHC/Iface/Recomp.hs
</a>
</li>
<li class="file-stats">
<a href="#06ff7bac58fd8cfe0c17b81963b03f4cce86a065">
compiler/GHC/IfaceToCore.hs
</a>
</li>
<li class="file-stats">
<a href="#5aa3321b0f5c08d7ebfa1a4a3340d4451258988b">
compiler/GHC/Linker/Loader.hs
</a>
</li>
<li class="file-stats">
<a href="#f5bf08d06298fee515f928eacddd8f46477717d9">
compiler/GHC/Runtime/Loader.hs
</a>
</li>
<li class="file-stats">
<a href="#7aacab42136b6e01e6108ff2271c3d4b427b01de">
compiler/GHC/StgToJS/Linker/Utils.hs
</a>
</li>
<li class="file-stats">
<a href="#1e112461bfd65ab9492f37fe37931c1d5ddc5c26">
compiler/GHC/Tc/Deriv/Infer.hs
</a>
</li>
<li class="file-stats">
<a href="#1dd9c7a6bbc222c976a6ec1c4b772232ae60f7e5">
compiler/GHC/Tc/Errors/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#cdba811872892f235fe7059df1a6c538fba60816">
compiler/GHC/Tc/Errors/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#9ea832ccdb4b5f7508a1efd6caedeafa16b269e7">
compiler/GHC/Tc/Gen/Splice.hs
</a>
</li>
<li class="file-stats">
<a href="#5d7c5ef0541bd4c1c950ecc95edf95171d20f538">
compiler/GHC/Tc/Utils/Backpack.hs
</a>
</li>
<li class="file-stats">
<a href="#f021c52a6ccf306e88c9f760b2aee33b180ba341">
compiler/GHC/Tc/Utils/Env.hs
</a>
</li>
<li class="file-stats">
<a href="#c6e4263ee64c68e57b7525127d98243fce38b1ea">
compiler/GHC/Tc/Utils/Monad.hs
</a>
</li>
<li class="file-stats">
<a href="#5461e7beeb7ae73d7c01f720cbaa3fa2c5333590">
compiler/GHC/Tc/Utils/TcType.hs
</a>
</li>
</ul>
<h5 style="margin-top: 10px; margin-bottom: 10px; font-size: 0.875rem;">
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: #737278;">

<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/compare/44f834339cf9d7cb94c8cb348bc468147506f5ad...e05b0ee65fde4f220e51365648e8c497b2f2fa8e">View it on GitLab</a>.
<br>
You're receiving this email because of your account on <a target="_blank" rel="noopener noreferrer" href="https://gitlab.haskell.org">gitlab.haskell.org</a>. <a href="https://gitlab.haskell.org/-/profile/notifications" target="_blank" rel="noopener noreferrer" class="mng-notif-link">Manage all notifications</a> · <a href="https://gitlab.haskell.org/help" target="_blank" rel="noopener noreferrer" class="help-link">Help</a>



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