<!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: .875rem;
}
body {
-webkit-text-shadow: rgba(255,255,255,.01) 0 0 1px;
}
body {
font-family: "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,.01) 0 0 1px; font-family: "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;">
sheaf pushed to branch wip/T24359 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: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3e0b0beef1dae11b50b506a3ea0d149b55d3e9af">3e0b0bee</a></strong>
<div>
<span> by sheaf </span> <i> at 2025-02-13T12:25:22+01:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Account for skolem escape in mightEqualLater

This commit:

  1. Refactors checkTyEqRhs to allow it be called in pure contexts,
     which means it skips doing any on-the-fly promotion.
  2. Calls checkTyEqRhs in mightEqualLater to check whether it a
     MetaTv can unify with a RHS or whether that would cause e.g.
     skolem escape errors or concreteness errors.

Fixes #25744
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9f40ae0d8308b7fffbf668dae41b0c472cfbadf5">9f40ae0d</a></strong>
<div>
<span> by Simon Peyton Jones </span> <i> at 2025-02-13T12:57:02+01:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Specialising expressions -- at last

This MR addresses #24359, which implements the GHC proposal 493 on SPECIALISE pragmas.

* The old code path (using SpecSig and SpecPrag) still exists.
* The new code path (using SpecSigE and SpecPragE) runs alongside it.
* All SPECIALISE pragmas are routed through the new code path, except
  if you give multiple type sigs, when the old code path is still used.
* Main documentation: Note [Handling new-form SPECIALISE pragmas] in
  GHC.Tc.Gen.Sig`

Thanks to @sheaf for helping with this MR.

The Big Thing is to introduce

  {-# SPECIALISE forall x.  f @Int x True #-}

where you can give type arguments and value argument to specialise; and
you can quantify them with forall, just as in Rules.

I thought it was going to be pretty simple, but it was a Long, Long Saga.

Highlights

* Overview Note [Handling new-form SPECIALISE pragmas] in GHC.Tc.Gen.Sig
  - New data constructor `SpecSigE` in data type `L.H.S.Binds.Sig`
  - New data construtor `SpecPragE` in data type `GHC.Hs.Binds.TcSpecPrag`
  - Renamer: uses `checkSpecESigShape` to decide which function to assocate the
             SPECIALISE pragma with
  - Some of the action is in `GHC.Tc.Gen.Sig.tcSpecPrag`
  - The rest is in `GHC.HsToCore.Binds.dsSpec`

* All of GHC.Tc.Gen.Rule is moved into GHC.Tc.Gen.Sig, because the code is
  very closely related.

* The forall'd binders for SPECIALISE are the same as those for a RULE, so I
  refactored, introducing data type `L.H.S.Binds.RuleBndrs`, with functions
  to rename, zonk, typecheck it.  I refactored this data type a bit; nicer now.

* On the LHS of RULES, or SPECIALISE, we want to disable the tricky mechanims
  described in Note [Desugaring non-canonical evidence] in GHC.HsToCore.Expr.
  Previously it wasn't fully disabled (just set to the empty set), and that
  didn't quite work in the new regime.

* There are knock-on changes to Template Haskell.

* For the LHS of a RULE and a SPECIALISE expression, I wanted to simplify
  it /without/ inlining the let-bindings for evidence variables.  I added
  a flag `so_inline` to the SimpleOpt optimiser to support this.  The
  entry point is `GHC.Core.SimpleOpt.simpleOptExprNoInline`

* Since forever we have had a hack for type variables on the LHS of
  RULES. I took the opportunity to tidy this up.  The main action is
  in the zonker.  See GHC.Tc.Zonk.Type Note [Free tyvars on rule LHS],
  and especially data construtor `SkolemiseFlexi`
  in data type `GHC.Tc.Zonk.Env.ZonkFlexi`

* Move `scopedSort` from GHC.Core.TyCo.FVs to GHC.Core.Predicate
  Reason: it now works for Ids as well, and I wanted to use isEvVar,
          which is defined in GHC.Core.Predicate
  Avoiding module loops meant that instead of exporting GHC.Core.TyCo.Tidy
  from GHC.Core.Type, modules now import the former directly.

  I also took the opportunity to remove unused exports
  from GHC.Core.Type.hs-boot

* Flag stuff:
  - Add flag `-Wdeprecated-pragmas` and use it to control the warning when
    using old-style SPECIALISE pragmas with multiple type ascriptions,

  - Add flag `-Wuseless-specialisations` and use it to control the warning emitted
    when GHC determines that a SPECIALISE pragma would have no effect. Don't
    want if the SPECIALISE is SPECIALISE INLINE (#4444)

    In response to #25389, we continue to generate these seemingly code for these
    seemingly useless SPECIALISE pragmas

  - Adds deprecations to Template Haskell `pragSpecD` and `pracSpecInlD`,

* Split up old-style SPECIALISE pragmas in GHC.Internal.Float,
  GHC.Internal.Numeric, GHC.Internal.Real

* Remove useless SPECIALISE pragmas in Data.Array (updating the array submodule)

Smaller things:

- Update the Users Guide

- Add mention of the changes to the 9.14 release notes as well as
  the Template Haskell changelog,
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/dd4ed1fd9c7118730904251f6fe383b623524586">dd4ed1fd</a></strong>
<div>
<span> by Simon Peyton Jones </span> <i> at 2025-02-13T12:57:03+01:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Warn about rules that previously quantified over equalities
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a2a39f3c6455adf13a273fee30626a28ab652329">a2a39f3c</a></strong>
<div>
<span> by sheaf </span> <i> at 2025-02-13T12:57:03+01:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Add -Wrule-lhs-equalities warning

This commit adds a new warning flag, -Wrule-lhs-equalities, which
controls the warning message that is emitted when the LHS of a RULE
gives rise to equality constraints that previous GHC versions would
have quantified over.

GHC instead discards such RULES, as GHC was never able to generate
a rule template that would ever fire; it's better to be explicit about
the fact that the RULE doesn't work.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5182564a33ec8ffd8abf9506d41ee1726be81c91">5182564a</a></strong>
<div>
<span> by sheaf </span> <i> at 2025-02-13T14:12:15+01:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>New plan from Feb 10
</pre>
</li>
</ul>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
155 changed files:
</h4>
<ul>
<li class="file-stats">
<a href="#06764eb0158306b83ab1998d18316392a51838c2">
compiler/GHC/Builtin/Names/TH.hs
</a>
</li>
<li class="file-stats">
<a href="#ce3e6c3976a2c771e1f01be5b4d9258d925a29fb">
compiler/GHC/Builtin/PrimOps/Ids.hs
</a>
</li>
<li class="file-stats">
<a href="#91648438362e5a35363d2bb7abb04016dedd7d7e">
compiler/GHC/Core/FamInstEnv.hs
</a>
</li>
<li class="file-stats">
<a href="#5596bb0f228bd2a308c4391df97375ae879430a8">
compiler/GHC/Core/InstEnv.hs
</a>
</li>
<li class="file-stats">
<a href="#35cff95f9f44690fc50b44bbe8ac3c554c7d5a5e">
compiler/GHC/Core/Make.hs
</a>
</li>
<li class="file-stats">
<a href="#446b4afbe6836b950115a619acea24ddde19dc90">
compiler/GHC/Core/Opt/CSE.hs
</a>
</li>
<li class="file-stats">
<a href="#ae6d91a5d028418bbf1431347d659e744e0a3128">
compiler/GHC/Core/Opt/Simplify/Iteration.hs
</a>
</li>
<li class="file-stats">
<a href="#48fbb5cdea308650de5756521feb28ec68819b9b">
compiler/GHC/Core/Opt/Simplify/Utils.hs
</a>
</li>
<li class="file-stats">
<a href="#b6a5ba32bafb8fbda933538b3007e755fef6f101">
compiler/GHC/Core/Opt/SpecConstr.hs
</a>
</li>
<li class="file-stats">
<a href="#0ca1508e5b0cedec2f19fe10e414597184209573">
compiler/GHC/Core/Predicate.hs
</a>
</li>
<li class="file-stats">
<a href="#d01de95d8c71d4dec6a9a59146186e29a5b3fd38">
compiler/GHC/Core/Rules.hs
</a>
</li>
<li class="file-stats">
<a href="#11ffe98a94d798427bc600e4fcfe899407536346">
compiler/GHC/Core/SimpleOpt.hs
</a>
</li>
<li class="file-stats">
<a href="#846e2566b022c9a12a5978ac7934d5b019fbea5c">
compiler/GHC/Core/Tidy.hs
</a>
</li>
<li class="file-stats">
<a href="#039e8f5676356ef05c90af828aae48aac7296e47">
compiler/GHC/Core/TyCo/FVs.hs
</a>
</li>
<li class="file-stats">
<a href="#379343fa560df0c7451aa5a1dd4f074dd37924d0">
compiler/GHC/Core/TyCo/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#0b087d030078c501a74df752a832dd50836eb075">
compiler/GHC/Core/TyCo/Tidy.hs
</a>
</li>
<li class="file-stats">
<a href="#84c9d3ba34173297e7d7747e02caa2e004b164fc">
compiler/GHC/Core/Type.hs
</a>
</li>
<li class="file-stats">
<a href="#a11863ba405cb13e5c25518fb7c6048b20e277f7">
compiler/GHC/Core/Type.hs-boot
</a>
</li>
<li class="file-stats">
<a href="#89a2e0e1a3095c7a42b10f2819049908908080e8">
compiler/GHC/Core/Unify.hs
</a>
</li>
<li class="file-stats">
<a href="#bbf06eb5d4f0db7bc3213b84b9f5822710ff7be8">
compiler/GHC/CoreToIface.hs
</a>
</li>
<li class="file-stats">
<a href="#0cfa18c0ec64f1546e30c0bd93e6607d52b81b26">
compiler/GHC/Driver/Config.hs
</a>
</li>
<li class="file-stats">
<a href="#2e5692f568fd7b67a6b172e2a60469da8392508c">
compiler/GHC/Driver/Flags.hs
</a>
</li>
<li class="file-stats">
<a href="#774d88050336ef660c7a219fb06c480c2fc639bc">
compiler/GHC/Driver/Session.hs
</a>
</li>
<li class="file-stats">
<a href="#65ca06d51797ebf672a62bde6c00bcb9444e1425">
compiler/GHC/Hs/Binds.hs
</a>
</li>
<li class="file-stats">
<a href="#75bfcd03f3ba9315d33104fcb0424c6bfeb4e334">
compiler/GHC/Hs/Decls.hs
</a>
</li>
<li class="file-stats">
<a href="#9f00edfedb0f969865b049a78de3866545b4a60b">
compiler/GHC/Hs/Instances.hs
</a>
</li>
<li class="file-stats">
<a href="#9f8f154268a51dc39e1f608e6d9845fdae82d480">
compiler/GHC/Hs/Stats.hs
</a>
</li>
<li class="file-stats">
<a href="#dd79b5199bc3b425c4536c633b39006df111a7ef">
compiler/GHC/HsToCore.hs
</a>
</li>
<li class="file-stats">
<a href="#65e2067fbb7377818b6cadff0531f44029499948">
compiler/GHC/HsToCore/Binds.hs
</a>
</li>
<li class="file-stats">
<a href="#cf4176c2d1c1c5ac2d46a9fa5fe02a24bc407c3c">
compiler/GHC/HsToCore/Errors/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#6eaba7424490cb26d74e0dab0f6fd7bc3537dca7">
compiler/GHC/HsToCore/Errors/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#6bdd5abc649727f2a802bc96ce5c276de19d3726">
compiler/GHC/HsToCore/Expr.hs
</a>
</li>
<li class="file-stats">
<a href="#73d2b5c14c6cd4cb2c09087042caf1a69ae51b72">
compiler/GHC/HsToCore/Foreign/Call.hs
</a>
</li>
<li class="file-stats">
<a href="#c8a27621f82549165d8946ae8e9f467660958059">
compiler/GHC/HsToCore/Monad.hs
</a>
</li>
<li class="file-stats">
<a href="#3c19c0be465f9a28d7b69f89c55648080fcc37eb">
compiler/GHC/HsToCore/Quote.hs
</a>
</li>
<li class="file-stats">
<a href="#b2fd0f5f3e0bc9dcc507931c0b7388bf10e925c2">
compiler/GHC/HsToCore/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#5fbeca6b3e6a959dedea83c4af51c13942e2def5">
compiler/GHC/Iface/Decl.hs
</a>
</li>
<li class="file-stats">
<a href="#649144a78135a23cabfc90dd83c4aabf448eb6ab">
compiler/GHC/Iface/Ext/Ast.hs
</a>
</li>
<li class="file-stats">
<a href="#d11203a9321005ba51a16d751c86f609d1f18c71">
compiler/GHC/Iface/Tidy.hs
</a>
</li>
<li class="file-stats">
<a href="#bf951467d4a9aa443cb109cb4c84a2891945649b">
compiler/GHC/Parser.y
</a>
</li>
<li class="file-stats">
<a href="#4769efc0cb06e92bc7562e31984f6d7d91048e51">
compiler/GHC/Parser/Errors/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#6bd0eb7fd0a01f3d8cf2efe3f1d026d2145cf10b">
compiler/GHC/Parser/Errors/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#446cb12ca6cefaf1c6eb79b7db643632744263c7">
compiler/GHC/Parser/PostProcess.hs
</a>
</li>
<li class="file-stats">
<a href="#af762064d779f7308dd415966c974f27d14f9943">
compiler/GHC/Rename/Bind.hs
</a>
</li>
<li class="file-stats">
<a href="#892acbb198a9095c917740d3c1297b56df4e3b7e">
compiler/GHC/Rename/HsType.hs
</a>
</li>
<li class="file-stats">
<a href="#7dd1cd0f6f2164a14c83d9aa564dd32bc30e447a">
compiler/GHC/Rename/Module.hs
</a>
</li>
<li class="file-stats">
<a href="#e05ee69330b0f7088f11a5f3567137547489664d">
compiler/GHC/Rename/Names.hs
</a>
</li>
<li class="file-stats">
<a href="#8354467a9f7f92c6aafb2f9edbc73a0cdbeeec3c">
compiler/GHC/Runtime/Debugger.hs
</a>
</li>
<li class="file-stats">
<a href="#173c7eb846a4e9b5fee79688a72cbf6a326e4e1e">
compiler/GHC/Runtime/Eval.hs
</a>
</li>
<li class="file-stats">
<a href="#8858278b4cb7284f96b29b5564bcb426de4fae70">
compiler/GHC/Runtime/Heap/Inspect.hs
</a>
</li>
<li class="file-stats">
<a href="#1522139eef391430974e254694d2feec1d43d85a">
compiler/GHC/StgToByteCode.hs
</a>
</li>
<li class="file-stats">
<a href="#b768fdf8e0594bf98104ef18145fc9f16550bc06">
compiler/GHC/Tc/Deriv.hs
</a>
</li>
<li class="file-stats">
<a href="#e4b9d5e9d2de37561bfd06a2c97a5c924a1bab76">
compiler/GHC/Tc/Errors.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="#83f745d921da7adb739e81f83e1c07e723e4a789">
compiler/GHC/Tc/Gen/Bind.hs
</a>
</li>
<li class="file-stats">
<a href="#9355bef855426caf5f526925edf351b20f9a86c4">
compiler/GHC/Tc/Gen/HsType.hs
</a>
</li>
<li class="file-stats">
<a href="#04338da99bccd89402218ca19c5724762f0fe641">
<span class="deleted-file">

compiler/GHC/Tc/Gen/Rule.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#eade747fa0a15693c67617629e286714fce958e4">
compiler/GHC/Tc/Gen/Sig.hs
</a>
</li>
<li class="file-stats">
<a href="#e65390fa5a32c453a81a1c9a3e1c4464d155ca4a">
compiler/GHC/Tc/Module.hs
</a>
</li>
<li class="file-stats">
<a href="#54436e21ea530a66a8a71bcc01c836f4740b8f02">
compiler/GHC/Tc/Solver.hs
</a>
</li>
<li class="file-stats">
<a href="#8bc716c15e34e2a77fef39fd4634b3ebbb9961f8">
compiler/GHC/Tc/Solver/Default.hs
</a>
</li>
<li class="file-stats">
<a href="#60f69bb5bc0ef8edf7d13518a1e48f7d36236318">
compiler/GHC/Tc/Solver/Dict.hs
</a>
</li>
<li class="file-stats">
<a href="#03ec4f8741105271af29a61fdb47c8feba9bbcfa">
compiler/GHC/Tc/Solver/Equality.hs
</a>
</li>
<li class="file-stats">
<a href="#b97557795e2f14fc492ff8c685b149c247b5e480">
compiler/GHC/Tc/Solver/InertSet.hs
</a>
</li>
<li class="file-stats">
<a href="#0c6b585a8a21f8340a85ca2cef89c4b1bf5a8953">
compiler/GHC/Tc/Solver/Monad.hs
</a>
</li>
<li class="file-stats">
<a href="#ab8ab088292736c35c38fa55bdaec8ddcbf20b32">
compiler/GHC/Tc/Solver/Solve.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="#5c0a7f8291c984f0fc06f59e7cf10dbecc11598b">
compiler/GHC/Tc/TyCl/PatSyn.hs
</a>
</li>
<li class="file-stats">
<a href="#3b6d78a50c8462304f843b952a88e531718dbbd2">
compiler/GHC/Tc/Types/Constraint.hs
</a>
</li>
<li class="file-stats">
<a href="#46e7b59eca287d43c19d0d8902b41f5d04f0d268">
compiler/GHC/Tc/Types/Evidence.hs
</a>
</li>
<li class="file-stats">
<a href="#93bba9b9e0195db135fec54160523a427ea042fd">
compiler/GHC/Tc/Types/Origin.hs
</a>
</li>
<li class="file-stats">
<a href="#59d42d45d27a766c3ef299d73c226697153b7f6e">
compiler/GHC/Tc/Utils/Instantiate.hs
</a>
</li>
<li class="file-stats">
<a href="#94c96afe1bb3b771ffbcfeeca34ce43ebbe76ccb">
compiler/GHC/Tc/Utils/TcMType.hs
</a>
</li>
<li class="file-stats">
<a href="#74295edeac870ee7f2f3484ebaffab5c948b735a">
compiler/GHC/Tc/Utils/Unify.hs
</a>
</li>
<li class="file-stats">
<a href="#1db07ed8cd9bab6b217a8f5a140176d3cb8672fd">
compiler/GHC/Tc/Validity.hs
</a>
</li>
<li class="file-stats">
<a href="#b198fb7c8791e079350222d110025a59d3933c7d">
compiler/GHC/Tc/Zonk/Env.hs
</a>
</li>
<li class="file-stats">
<a href="#cf6d0ddc7f180b42a67a71e31b214052088685f7">
compiler/GHC/Tc/Zonk/TcType.hs
</a>
</li>
<li class="file-stats">
<a href="#70276ecbf78c4d6abaaaba692722a2a4e2e46167">
compiler/GHC/Tc/Zonk/Type.hs
</a>
</li>
<li class="file-stats">
<a href="#2eac51f9871ca0c0698aa1fc7f79c05ef8fc4a49">
compiler/GHC/ThToHs.hs
</a>
</li>
<li class="file-stats">
<a href="#166e3514d27c63ef7e86af29830d9e8b2a31c8b1">
compiler/GHC/Types/Basic.hs
</a>
</li>
<li class="file-stats">
<a href="#e2c828ee9e003df518a07b05beaa6971e5c62eb0">
compiler/GHC/Types/Error/Codes.hs
</a>
</li>
<li class="file-stats">
<a href="#0d674271b5e602f8c38b813c8c42593afce96a1b">
compiler/GHC/Types/Hint.hs
</a>
</li>
<li class="file-stats">
<a href="#5543c5c6c25dc2d751debfc3bc1be17365251351">
compiler/GHC/Types/Hint/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#5dac619989e8509003cf7b463c100f5cc56072a3">
compiler/GHC/Types/Var.hs
</a>
</li>
<li class="file-stats">
<a href="#00df6c149812cb8e21335d2ec26d0f24bdf1e441">
compiler/Language/Haskell/Syntax/Binds.hs
</a>
</li>
<li class="file-stats">
<a href="#997b81d43f8807b1b83ca6cc7c52b367982f2bf7">
compiler/Language/Haskell/Syntax/Decls.hs
</a>
</li>
<li class="file-stats">
<a href="#55fd4da29695073f23c02f21476e753eb7c467b4">
compiler/Language/Haskell/Syntax/Extension.hs
</a>
</li>
<li class="file-stats">
<a href="#0f33fd88c617246c7f89c4477d2d1d24f942df23">
compiler/ghc.cabal.in
</a>
</li>
<li class="file-stats">
<a href="#3000f72e31f633a1742a9c76be14862281166b11">
docs/users_guide/9.14.1-notes.rst
</a>
</li>
<li class="file-stats">
<a href="#878399d76e594ee2194b99baaccd7b67e9740bb1">
docs/users_guide/exts/pragmas.rst
</a>
</li>
<li class="file-stats">
<a href="#e16ae6db99f98868d3603a0c7df0bb6a793a330d">
docs/users_guide/using-warnings.rst
</a>
</li>
<li class="file-stats">
<a href="#9291b31007e89e8b38b9ca916cdad6f71073b937">
libraries/array
</a>
</li>
<li class="file-stats">
<a href="#1799b3e3e497a7a3adca086b46c1637c56ab02c0">
libraries/ghc-boot-th/GHC/Internal/TH/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#e06f432b89a0f51916ad045764ef964704ba13ca">
libraries/ghc-internal/src/GHC/Internal/Float.hs
</a>
</li>
<li class="file-stats">
<a href="#2f46402a3b7fd8e75b49946562a11617ea83797c">
libraries/ghc-internal/src/GHC/Internal/Numeric.hs
</a>
</li>
<li class="file-stats">
<a href="#453aa00bb9f6dd9fa92bfc87eb5783829b25e154">
libraries/ghc-internal/src/GHC/Internal/Real.hs
</a>
</li>
<li class="file-stats">
<a href="#000b1e763c4e401bf1b71920b9bb2a87a5f41be4">
libraries/ghc-internal/src/GHC/Internal/TH/Lib.hs
</a>
</li>
<li class="file-stats">
<a href="#661b43655578566ae0a6ab55b6f670b1de666aa5">
libraries/ghc-internal/src/GHC/Internal/TH/Syntax.hs
</a>
</li>
<li class="file-stats">
<a href="#556b3bb7c75dfe37155d079195cb9671e3061783">
libraries/template-haskell/Language/Haskell/TH/Lib.hs
</a>
</li>
<li class="file-stats">
<a href="#ee61d093f9c845475278836990fdde8877a1de02">
libraries/template-haskell/changelog.md
</a>
</li>
<li class="file-stats">
<a href="#d6126952bcecd01336f59915fe0e1b06e94a397d">
<span class="new-file">
+
testsuite/tests/deSugar/should_compile/T10251.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#2937d23144454625b5830e39f20bc1cede74d24e">
testsuite/tests/diagnostic-codes/codes.stdout
</a>
</li>
<li class="file-stats">
<a href="#5ff2ade90c007a336603fdf2c260560031a87873">
<span class="deleted-file">

testsuite/tests/ghc-api/T18522-dbg-ppr.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#2576d273556f3c6af6a44c20f26fdce3e3bbc9ec">
testsuite/tests/interface-stability/template-haskell-exports.stdout
</a>
</li>
<li class="file-stats">
<a href="#9205abed1bfea7ab65bcd406191b7f7cb5861965">
testsuite/tests/parser/should_compile/OpaqueParseWarn1.stderr
</a>
</li>
<li class="file-stats">
<a href="#1c385de51b1eb9216a854c05a624b3da39015931">
testsuite/tests/parser/should_fail/T7848.stderr
</a>
</li>
<li class="file-stats">
<a href="#356481640786c687ec1202fdfd7ff930398b6a8b">
<span class="new-file">
+
testsuite/tests/simplCore/should_compile/DsSpecPragmas.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#9c415e130172b47cbedcb14c19f602336a1864e6">
<span class="new-file">
+
testsuite/tests/simplCore/should_compile/DsSpecPragmas.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#a2d3921bd6d77c18421a1b87c95f3b1076633000">
testsuite/tests/simplCore/should_compile/T12603.stdout
</a>
</li>
<li class="file-stats">
<a href="#9919130b592f579ef1d69cf7e5576144fffa293f">
testsuite/tests/simplCore/should_compile/T15445.stderr
</a>
</li>
<li class="file-stats">
<a href="#544f7c95de41d94573f8f8a31ebe56de488637a7">
<span class="new-file">
+
testsuite/tests/simplCore/should_compile/T24359a.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#4f01fa49b10fd0eeb72875e73e4f243518644dc7">
<span class="new-file">
+
testsuite/tests/simplCore/should_compile/T24359a.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#32fcae3cd84d603814eff047af76ee741fa06b13">
<span class="new-file">
+
testsuite/tests/simplCore/should_compile/T25389.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#01bf3a4980f9cfb5245388f17cb94dd8c2a0ba5b">
<span class="new-file">
+
testsuite/tests/simplCore/should_compile/T25389.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#27c31f2c3be247d09e723ebba36f5ad88b700697">
testsuite/tests/simplCore/should_compile/T4398.stderr
</a>
</li>
<li class="file-stats">
<a href="#27b99033353852dac4824ab604a37bbdf2784314">
testsuite/tests/simplCore/should_compile/T5821.hs
</a>
</li>
<li class="file-stats">
<a href="#082a12d9e0d1a5d8a962b12687b72935ba17722f">
testsuite/tests/simplCore/should_compile/T8537.stderr
</a>
</li>
<li class="file-stats">
<a href="#fc07c260b75644727a8cdc1af5c861a44d4bfb5e">
testsuite/tests/simplCore/should_compile/all.T
</a>
</li>
<li class="file-stats">
<a href="#4a8b62b95e4644cc3aad508044bea749892c4a05">
<span class="deleted-file">

testsuite/tests/simplCore/should_compile/simpl016.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#af79a1d4ddc6d730cda2c77cdceb1b86296b564c">
<span class="new-file">
+
testsuite/tests/simplCore/should_fail/T25117a.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#ee51be605526f809ff01ed3cc595e7d43c1d21e8">
<span class="new-file">
+
testsuite/tests/simplCore/should_fail/T25117a.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#8cd6b29590c9046d52031076bc568104c9148f40">
<span class="new-file">
+
testsuite/tests/simplCore/should_fail/T25117b.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#47a5b6c9d5034152d680c4f4609775939c97628e">
<span class="new-file">
+
testsuite/tests/simplCore/should_fail/T25117b.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#1001545a0c7d4becdb7e0a2bd5d3b61c30491dd9">
testsuite/tests/simplCore/should_fail/all.T
</a>
</li>
<li class="file-stats">
<a href="#7fa7beba142e44e1a9b152837044dc81220361fe">
<span class="new-file">
+
testsuite/tests/simplCore/should_run/T24359b.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#4bb4a9f27e0b5fa6ccd4f9f5aa17ae46d7c53e4c">
<span class="new-file">
+
testsuite/tests/simplCore/should_run/T24359b.stdout
</span>
</a>
</li>
<li class="file-stats">
<a href="#03e40b9006a3cfc01e112fe32513b15c8634f9bc">
testsuite/tests/simplCore/should_run/all.T
</a>
</li>
<li class="file-stats">
<a href="#789f252e5d9fef06f38d25ac1ba2f4f396b7d532">
<span class="new-file">
+
testsuite/tests/th/T13123.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#7afd261b4f98012d26b67543772cadb4a07e56db">
testsuite/tests/th/T19363.stdout
</a>
</li>
<li class="file-stats">
<a href="#e39b1eb9b9504771f26cb874591754e5f72cd6a3">
testsuite/tests/th/T7064.stdout
</a>
</li>
<li class="file-stats">
<a href="#c66270bf88a56b88d7475070c60ae85377c0bc06">
testsuite/tests/th/TH_pragma.hs
</a>
</li>
<li class="file-stats">
<a href="#a39ad51941f25950f8b263aff776f79d4153f682">
testsuite/tests/th/TH_pragma.stderr
</a>
</li>
<li class="file-stats">
<a href="#ed07fb9a97ce46bf7f87c029813a0c47cef396bc">
<span class="new-file">
+
testsuite/tests/typecheck/should_compile/RuleEqs.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#3a898a401e822ab63b063bcc8e11e0836f338461">
<span class="new-file">
+
testsuite/tests/typecheck/should_compile/RuleEqs.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#d63c4891093aa14f4b9ac7772bc1fd00be8b0b8b">
testsuite/tests/typecheck/should_compile/T10504.stderr
</a>
</li>
<li class="file-stats">
<a href="#abe5d23f2e9d5b9add38861dda66e5c654b68288">
testsuite/tests/typecheck/should_compile/T2494.stderr
</a>
</li>
<li class="file-stats">
<a href="#c486bebba094e3b81a41ae306fb2e6eef8417763">
<span class="new-file">
+
testsuite/tests/typecheck/should_compile/T25744.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#26e119060f3785448d69b065a3a4b3f6f8732fa5">
<span class="new-file">
+
testsuite/tests/typecheck/should_compile/TcSpecPragmas.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#1343f9a30829f94920112bd84aa75c992e145598">
<span class="new-file">
+
testsuite/tests/typecheck/should_compile/TcSpecPragmas.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#34fe7bf0e6fbf60effb28393399ba68666593909">
testsuite/tests/typecheck/should_compile/all.T
</a>
</li>
<li class="file-stats">
<a href="#b12c7a698226a356b2212dbea9a75d9ad9747a19">
testsuite/tests/typecheck/should_compile/tc186.hs
</a>
</li>
<li class="file-stats">
<a href="#67d05581472252041e60d191932eb7424879d22d">
testsuite/tests/typecheck/should_compile/tc212.hs
</a>
</li>
<li class="file-stats">
<a href="#2ef0fea1fdddb0ac774ffa8891ba7d610fda164b">
<span class="new-file">
+
testsuite/tests/typecheck/should_fail/SpecPragmasFail.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#add8242e4daa8c69ac2b6284d5e12144c5aab3b3">
<span class="new-file">
+
testsuite/tests/typecheck/should_fail/SpecPragmasFail.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#b90469d42dc3fbd91171a499f33a5241c3c1bf87">
testsuite/tests/typecheck/should_fail/T5853.stderr
</a>
</li>
<li class="file-stats">
<a href="#a0794e0113c0c80aedb2fa23ac8d66af113681e5">
<span class="new-file">
+
testsuite/tests/warnings/should_compile/SpecMultipleTys.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#9d063b41a9f2ec985c8a11faff01c624934d15bc">
<span class="new-file">
+
testsuite/tests/warnings/should_compile/SpecMultipleTys.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#9ea9142f2d82f68fc42004949a740027ba8ba1f6">
testsuite/tests/warnings/should_compile/T19296.stderr
</a>
</li>
<li class="file-stats">
<a href="#41a913dca0020ecd1ca28a364e1f9aa46db04c5a">
testsuite/tests/warnings/should_compile/all.T
</a>
</li>
<li class="file-stats">
<a href="#688fd47750a98395a49436f2b3b3a3a92ebd5376">
<span class="new-file">
+
testsuite/tests/warnings/should_fail/SpecEMultipleTys.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#201b356a3454ffee1044d9bdf62504605696cc45">
<span class="new-file">
+
testsuite/tests/warnings/should_fail/SpecEMultipleTys.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#732485a54152776a838c9685ab79f0d1e1b48c1a">
testsuite/tests/warnings/should_fail/all.T
</a>
</li>
<li class="file-stats">
<a href="#c5662bedafa6a48ec7062b131d94b70f514207d9">
utils/check-exact/ExactPrint.hs
</a>
</li>
</ul>
<h5 style="margin-top: 10px; margin-bottom: 10px; font-size: .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: #626168;">

<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/compare/18f0e82b63d2dad764c3359473f5605728d7add7...5182564a33ec8ffd8abf9506d41ee1726be81c91">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>