<!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 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: -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: -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 master at <a href="https://gitlab.haskell.org/ghc/ghc" style="color: #1068bf;">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/172ff88fcac864a029d1cf77fbbe04c7a969d70d" style="color: #1068bf;">172ff88f</a></strong>
<div>
<span> by Georgi Lyubenov </span> <i> at 2023-02-21T18:35:56-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.8125rem; color: #303030; position: relative; font-family: "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: #fafafa; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dbdbdb;'>GHC proposal 496 - Nullary record wildcards
This patch implements GHC proposal 496, which allows record wildcards
to be used for nullary constructors, e.g.
data A = MkA1 | MkA2 { fld1 :: Int }
f :: A -> Int
f (MkA1 {..}) = 0
f (MkA2 {..}) = fld1
To achieve this, we add arity information to the record field
environment, so that we can accept a constructor which has no fields
while continuing to reject non-record constructors with more than 1
field. See Note [Nullary constructors and empty record wildcards],
as well as the more general overview in Note [Local constructor info in the renamer],
both in the newly introduced GHC.Types.ConInfo module.
Fixes #22161
</pre>
</li>
</ul>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
30 changed files:
</h4>
<ul>
<li class="file-stats">
<a href="#86d694037d496c511e28b2c09c8410f67dc19596" style="color: #1068bf;">
compiler/GHC/Rename/Env.hs
</a>
</li>
<li class="file-stats">
<a href="#7dd1cd0f6f2164a14c83d9aa564dd32bc30e447a" style="color: #1068bf;">
compiler/GHC/Rename/Module.hs
</a>
</li>
<li class="file-stats">
<a href="#e05ee69330b0f7088f11a5f3567137547489664d" style="color: #1068bf;">
compiler/GHC/Rename/Names.hs
</a>
</li>
<li class="file-stats">
<a href="#cfa41b5649933e5b12f7796e9d49b9dd6a0bc59f" style="color: #1068bf;">
compiler/GHC/Rename/Pat.hs
</a>
</li>
<li class="file-stats">
<a href="#1dd9c7a6bbc222c976a6ec1c4b772232ae60f7e5" style="color: #1068bf;">
compiler/GHC/Tc/Errors/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#cdba811872892f235fe7059df1a6c538fba60816" style="color: #1068bf;">
compiler/GHC/Tc/Errors/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#e65390fa5a32c453a81a1c9a3e1c4464d155ca4a" style="color: #1068bf;">
compiler/GHC/Tc/Module.hs
</a>
</li>
<li class="file-stats">
<a href="#7dcf5b567a6cd3c9d98cf8d57323fbca1b1536e9" style="color: #1068bf;">
compiler/GHC/Tc/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#c6e4263ee64c68e57b7525127d98243fce38b1ea" style="color: #1068bf;">
compiler/GHC/Tc/Utils/Monad.hs
</a>
</li>
<li class="file-stats">
<a href="#1dd290540fd249ae47d5724e3b999f091d9c36c3" style="color: #1068bf;">
<span class="new-file">
+
compiler/GHC/Types/ConInfo.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#ef5ad6f4dfc8fa107eace213eecba4bc1014ca57" style="color: #1068bf;">
compiler/Language/Haskell/Syntax/Type.hs
</a>
</li>
<li class="file-stats">
<a href="#0f33fd88c617246c7f89c4477d2d1d24f942df23" style="color: #1068bf;">
compiler/ghc.cabal.in
</a>
</li>
<li class="file-stats">
<a href="#56cab10ba9d31c526f47a492a4151a878077dc2d" style="color: #1068bf;">
docs/users_guide/9.8.1-notes.rst
</a>
</li>
<li class="file-stats">
<a href="#f227a38797c18ee429e783e5132ca39e5a4cc7e7" style="color: #1068bf;">
testsuite/tests/count-deps/CountDepsAst.stdout
</a>
</li>
<li class="file-stats">
<a href="#2dcdf7aadcff5b41822596f22b49b2851374d0cd" style="color: #1068bf;">
testsuite/tests/count-deps/CountDepsParser.stdout
</a>
</li>
<li class="file-stats">
<a href="#397adf70b919569fdab80cb922275775dc012b8e" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_compile/GADTNullaryRecordRecordWildcard.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#ab3b8ae9baaa66b0afef0bd6390c16cf78800e80" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_compile/GADTNullaryRecordWildcard.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#74ac97158022737c57ea3387aeecce6fe724eb99" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_compile/GADTSymbolicRecordRecordWildcard.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#a989bba13c9a8d3db49acc42ac59c3dd690a8646" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_compile/GHCIImplicitImportNullaryRecordWildcard.script
</span>
</a>
</li>
<li class="file-stats">
<a href="#b8f3f65dbdff8ecf142394777b0ffb82b9e07dc9" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_compile/GHCINullaryRecordWildcard.script
</span>
</a>
</li>
<li class="file-stats">
<a href="#ea29d67118c6cc3ede67211f20216589bca07eda" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_compile/ImportNullaryRecordWildcard.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#7a4657efd53ea0e3df778a27b42b083fd07170da" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_compile/NullaryRecordRecordWildcard.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#ea067d8244526dbb2d623f539567d5ee02273857" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_compile/NullaryRecordWildcard.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#a4162a155076487da39ef091cacc50c633652a4d" style="color: #1068bf;">
testsuite/tests/rename/should_compile/all.T
</a>
</li>
<li class="file-stats">
<a href="#a2087dd5e4014130ac07e8debc6bc02bc5a2f9c1" style="color: #1068bf;">
testsuite/tests/rename/should_fail/T9815.stderr
</a>
</li>
<li class="file-stats">
<a href="#24b3c1caac5288525e7b80925bb9688902e5d72d" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_fail/T9815b.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#875b8dc3402df7ad1cc724fb51aff6306b7705d2" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_fail/T9815b.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#16a247032adb504921ebda5e597f0a9f36057236" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_fail/T9815bghci.script
</span>
</a>
</li>
<li class="file-stats">
<a href="#90e53141044f21360a9b6bb3baa26eef05bbc17b" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_fail/T9815bghci.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#9be471cfa8fcafdb353bb990a3f495fc49ca1d18" style="color: #1068bf;">
<span class="new-file">
+
testsuite/tests/rename/should_fail/T9815ghci.script
</span>
</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: #666;">
—
<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/commit/172ff88fcac864a029d1cf77fbbe04c7a969d70d" style="color: #1068bf;">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" style="color: #1068bf;">gitlab.haskell.org</a>. <a href="https://gitlab.haskell.org/-/profile/notifications" target="_blank" rel="noopener noreferrer" class="mng-notif-link" style="color: #1068bf;">Manage all notifications</a> · <a href="https://gitlab.haskell.org/help" target="_blank" rel="noopener noreferrer" class="help-link" style="color: #1068bf;">Help</a>
<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/172ff88fcac864a029d1cf77fbbe04c7a969d70d"}}</script>
</p>
</div>
</body>
</html>