<!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, "GitLab Mono"), JetBrains Mono, 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, "GitLab Sans"),-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, "GitLab Sans"),-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/cee81370cd6ef256f66035e3116878d4cb82e28b">cee81370</a></strong>
<div>
<span> by Sylvain Henry </span> <i> at 2023-11-16T09:57:46-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #333238; position: relative; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","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;'>Fix unusable units and module reexport interaction (#21097)

This commit fixes an issue with ModUnusable introduced in df0f148feae.

In mkUnusableModuleNameProvidersMap we traverse the list of unusable
units and generate ModUnusable origin for all the modules they contain:
exposed modules, hidden modules, and also re-exported modules. To do
this we have a two-level map:

  ModuleName -> Unit:ModuleName (aka Module) -> ModuleOrigin

So for each module name "M" in broken unit "u" we have:
  "M" -> u:M -> ModUnusable reason

However in the case of module reexports we were using the *target*
module as a key. E.g. if "u:M" is a reexport for "X" from unit "o":
   "M" -> o:X -> ModUnusable reason

Case 1: suppose a reexport without module renaming (u:M -> o:M) from
unusable unit u:
   "M" -> o:M -> ModUnusable reason

Here it's claiming that the import of M is unusable because a reexport
from u is unusable. But if unit o isn't unusable we could also have in
the map:
   "M" -> o:M -> ModOrigin ...

Issue: the Semigroup instance of ModuleOrigin doesn't handle the case
(ModUnusable <> ModOrigin)

Case 2: similarly we could have 2 unusable units reexporting the same module
without renaming, say (u:M -> o:M) and (v:M -> o:M) with u and v
unusable. It gives:

  "M" -> o:M -> ModUnusable ... (for u)
  "M" -> o:M -> ModUnusable ... (for v)

Issue: the Semigroup instance of ModuleOrigin doesn't handle the case
(ModUnusable <> ModUnusable).

This led to #21097, #16996, #11050.

To fix this, in this commit we make ModUnusable track whether the module
used as key is a reexport or not (for better error messages) and we use
the re-export module as key. E.g. if "u:M" is a reexport for "o:X" and u
is unusable, we now record:

    "M" -> u:M -> ModUnusable reason reexported=True

So now, we have two cases for a reexport u:M -> o:X:
   - u unusable: "M" -> u:M -> ModUnusable ... reexported=True
   - u usable:   "M" -> o:X -> ModOrigin   ... reexportedFrom=u:M

The second case is indexed with o:X because in this case the Semigroup
instance of ModOrigin is used to combine valid expositions of a module
(directly or via reexports).

Note that module lookup functions select usable modules first (those who
have a ModOrigin value), so it doesn't matter if we add new ModUnusable
entries in the map like this:

  "M" -> {
    u:M -> ModUnusable ... reexported=True
    o:M -> ModOrigin ...
  }

The ModOrigin one will be used. Only if there is no ModOrigin or
ModHidden entry will the ModUnusable error be printed. See T21097 for an
example printing several reasons why an import is unusable.
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3e606230e904482f900a43a25aa4584567f25d87">3e606230</a></strong>
<div>
<span> by Krzysztof Gogolewski </span> <i> at 2023-11-16T09:58:22-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #333238; position: relative; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","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;'>Fix IPE test

A helper function was defined in a different module than used.
To reproduce: ./hadrian/build test --test-root-dirs=testsuite/tests/rts/ipe
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5aa02dc484719b15dfd438dad1bfac9ada4ed44b">5aa02dc4</a></strong>
<div>
<span> by Andreas Klebinger </span> <i> at 2023-11-16T18:01:52-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #333238; position: relative; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","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;'>Properly compute unpacked sizes for -funpack-small-strict-fields.

Use rep size rather than rep count to compute the size.

Fixes #22309
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4353ce256a30f111c6a372d8402f532efa572d42">4353ce25</a></strong>
<div>
<span> by James Henri Haydon </span> <i> at 2023-11-16T18:01:56-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #333238; position: relative; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","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;'>Explicit methods for Alternative Compose

Explicitly define some and many in Alternative instance for
Data.Functor.Compose

Implementation of https://github.com/haskell/core-libraries-committee/issues/181
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/d2b862b0d5f67020969e8dd590f2fb61301361ff">d2b862b0</a></strong>
<div>
<span> by Ignat Insarov </span> <i> at 2023-11-16T18:02:02-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #333238; position: relative; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","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;'>Add permutations for non-empty lists.

Approved by CLC in https://github.com/haskell/core-libraries-committee/issues/68#issuecomment-1221409837
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/91d1c2faabd3f01af610fe96d3a5c1b704cb8dd5">91d1c2fa</a></strong>
<div>
<span> by Andrew Lelechenko </span> <i> at 2023-11-16T18:02:02-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #333238; position: relative; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","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;'>Update changelog and since annotations for Data.List.NonEmpty.permutations

Approved by CLC in https://github.com/haskell/core-libraries-committee/issues/68#issuecomment-1221409837
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3c1959b3850452547aa59ced8d94c32121c77d37">3c1959b3</a></strong>
<div>
<span> by Oleg Alexander </span> <i> at 2023-11-16T18:02:05-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #333238; position: relative; font-family: var(--default-mono-font, "GitLab Mono"),"JetBrains Mono","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;'>Update doc string for traceShow

Updated doc string for traceShow.
</pre>
</li>
</ul>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
30 changed files:
</h4>
<ul>
<li class="file-stats">
<a href="#4aad0050db1a8a20db8bbca149111de99cb299c9">
compiler/GHC/Core/TyCon.hs
</a>
</li>
<li class="file-stats">
<a href="#cd077d8c3df481acea295841f9a5bba46e555fe4">
compiler/GHC/Iface/Errors/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#b5a1d947a78cef8abda1814a89dc7a5e5d31f3fb">
compiler/GHC/Iface/Errors/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#261c0c5029eb34eb7436b087d77314f377ff8223">
compiler/GHC/Types/Id/Make.hs
</a>
</li>
<li class="file-stats">
<a href="#f4993649301794fc2c8cdece491d8b20f37638a6">
compiler/GHC/Unit/Finder.hs
</a>
</li>
<li class="file-stats">
<a href="#3aa9fcc54119fbfd70f05cc64dbaa628d173bb78">
compiler/GHC/Unit/Finder/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#fb39dbd5a18747427e8ae2c57dcdde3473e65a53">
compiler/GHC/Unit/State.hs
</a>
</li>
<li class="file-stats">
<a href="#523e258f899a29c551e69a88115587d32ba73db1">
docs/users_guide/9.10.1-notes.rst
</a>
</li>
<li class="file-stats">
<a href="#2e45f2cd303dd998950a7c8042e796a5b2abd64f">
docs/users_guide/using-optimisation.rst
</a>
</li>
<li class="file-stats">
<a href="#392e9dfd3417e267d708c5ab16536f2994d43745">
libraries/base/changelog.md
</a>
</li>
<li class="file-stats">
<a href="#4e77ee957acd612638e8a1117ea65c9784cb4acd">
libraries/base/src/Data/Functor/Compose.hs
</a>
</li>
<li class="file-stats">
<a href="#bb99dcdd1145e72572944a803ab3b333da8a2489">
libraries/base/src/Data/List/NonEmpty.hs
</a>
</li>
<li class="file-stats">
<a href="#27fabb20bc1069283860657e4d05a07e74025ee7">
libraries/base/src/Debug/Trace.hs
</a>
</li>
<li class="file-stats">
<a href="#c71473590ba246277948f3a62e44ba1587d07a54">
<span class="new-file">
+
testsuite/tests/driver/T21097/Makefile
</span>
</a>
</li>
<li class="file-stats">
<a href="#02e52efc31ac1b6d275ecafbfdf45501712ded42">
<span class="new-file">
+
testsuite/tests/driver/T21097/T21097.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#a103b2adcafdc7ef79822bc277afc6e9f784bef3">
<span class="new-file">
+
testsuite/tests/driver/T21097/Test.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#8932ff46700a0673464cd41a144fbd3e50a553fa">
<span class="new-file">
+
testsuite/tests/driver/T21097/all.T
</span>
</a>
</li>
<li class="file-stats">
<a href="#f431ed0f74a9982aa57a5b14c8dcdd428f34a4c8">
<span class="new-file">
+
testsuite/tests/driver/T21097/pkgdb/a.conf
</span>
</a>
</li>
<li class="file-stats">
<a href="#c54efdf32dd4ac2db0c445dafd5a8c9539bb8e8e">
<span class="new-file">
+
testsuite/tests/driver/T21097/pkgdb/b.conf
</span>
</a>
</li>
<li class="file-stats">
<a href="#7570a6b21051e53150ab36beb068c2a9c20a94c9">
<span class="new-file">
+
testsuite/tests/driver/T21097/pkgdb/c.conf
</span>
</a>
</li>
<li class="file-stats">
<a href="#911eeb636b9091be1fefa8826f39bb18f74b3b23">
<span class="new-file">
+
testsuite/tests/driver/T21097b/Makefile
</span>
</a>
</li>
<li class="file-stats">
<a href="#0b2f0e67206c8b9609b9a37a8a912c26307d2b44">
<span class="new-file">
+
testsuite/tests/driver/T21097b/T21097b.stdout
</span>
</a>
</li>
<li class="file-stats">
<a href="#3123cad883dcb6b5d5db018c8ed1fe0bd4440fac">
<span class="new-file">
+
testsuite/tests/driver/T21097b/Test.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#e0ce3d6e38224d194e61f22da8e22346660e6a4c">
<span class="new-file">
+
testsuite/tests/driver/T21097b/all.T
</span>
</a>
</li>
<li class="file-stats">
<a href="#8a603eeb3797bfce20ea3df0fc4f528367c28f84">
<span class="new-file">
+
testsuite/tests/driver/T21097b/pkgdb/a.conf
</span>
</a>
</li>
<li class="file-stats">
<a href="#aef0e52cf4ecf9ea9297b345f7232802762a823c">
<span class="new-file">
+
testsuite/tests/driver/T21097b/pkgdb/b.conf
</span>
</a>
</li>
<li class="file-stats">
<a href="#775fe0b3d04834c46aa751c5e557e8be193adbe9">
<span class="new-file">
+
testsuite/tests/driver/T21097b/pkgdb/c.conf
</span>
</a>
</li>
<li class="file-stats">
<a href="#2ca7b1d6bb24cd05ca30a428efb924268c8dbc51">
testsuite/tests/interface-stability/base-exports.stdout
</a>
</li>
<li class="file-stats">
<a href="#482ce10224feee28cb25df69f2be2fd845ccb44d">
testsuite/tests/interface-stability/base-exports.stdout-javascript-unknown-ghcjs
</a>
</li>
<li class="file-stats">
<a href="#0c9107f6ffbb0ee70fe83374d94d1734a3bac3cb">
testsuite/tests/interface-stability/base-exports.stdout-mingw32
</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/17924162f6d59ba32b22871b2abad7985d75e3b4...3c1959b3850452547aa59ced8d94c32121c77d37">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>