<!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 wip/marge_bot_batch_merge_job
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/effdd948056923f3bc03688c24d7e0339d6272f5">effdd948</a></strong>
<div>
<span>by Andrew Martin</span>
<i>at 2019-06-14T14:48:13Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Implement the -XUnliftedNewtypes extension.
GHC Proposal: 0013-unlifted-newtypes.rst
Discussion: https://github.com/ghc-proposals/ghc-proposals/pull/98
Issues: #15219, #1311, #13595, #15883
Implementation Details:
Note [Implementation of UnliftedNewtypes]
Note [Unifying data family kinds]
Note [Compulsory newtype unfolding]
This patch introduces the -XUnliftedNewtypes extension. When this
extension is enabled, GHC drops the restriction that the field in
a newtype must be of kind (TYPE 'LiftedRep). This allows types
like Int# and ByteArray# to be used in a newtype. Additionally,
coerce is made levity-polymorphic so that it can be used with
newtypes over unlifted types.
The bulk of the changes are in TcTyClsDecls.hs. With -XUnliftedNewtypes,
getInitialKind is more liberal, introducing a unification variable to
return the kind (TYPE r0) rather than just returning (TYPE 'LiftedRep).
When kind-checking a data constructor with kcConDecl, we attempt to
unify the kind of a newtype with the kind of its field's type. When
typechecking a data declaration with tcTyClDecl, we again perform a
unification. See the implementation note for more on this.
Co-authored-by: Richard Eisenberg <rae@richarde.dev>
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/5279dda861f6a5cc804be88dc5f0ff2442660149">5279dda8</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2019-06-14T14:48:51Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">PrelRules: Don't break let/app invariant in shiftRule
Previously shiftRule would rewrite as invalid shift like
```
let x = I# (uncheckedIShiftL# n 80)
in ...
```
to
```
let x = I# (error "invalid shift")
in ...
```
However, this breaks the let/app invariant as `error` is not
okay-for-speculation. There isn't an easy way to avoid this so let's not
try. Instead we just take advantage of the undefined nature of invalid
shifts and return zero.
Fixes #16742.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/83c8abe2e0760d7c4c2313e0b3f6877924915c53">83c8abe2</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2019-06-14T17:19:56Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Lint testsuite for framework failures
This introduces a new lint job checking for framework failures and
listing broken tests.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/f391d74448b42fd3685c2987f91602af53a60f1a">f391d744</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2019-06-14T17:19:56Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">lint: Only apply --interactive lint to testsuite .T files
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/073e4750b3c8778e1a60d8347d699b40e91982e0">073e4750</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2019-06-14T17:19:56Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Lint the linters
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/commit/5d880cd86324751f435348c8a48573c2e177cf85">5d880cd8</a></strong>
<div>
<span>by Alp Mestanogullari</span>
<i>at 2019-06-14T17:19:58Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove duplicates from 'ghc --info' output
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#587d266bb27a4dc3022bbed44dfa19849df3044c">
.gitlab-ci.yml
</a>
</li>
<li class="file-stats">
<a href="#94d74d443c79a6f0e3f44097cf3dd2f1a34bdcbe">
.gitlab/linters/check-makefiles.py
</a>
</li>
<li class="file-stats">
<a href="#e744be31242d2de56a037bead48e7046d28c2059">
.gitlab/linters/linter.py
</a>
</li>
<li class="file-stats">
<a href="#2c842f2f15e67826dc12cc363525b56acb7b7882">
compiler/basicTypes/Id.hs
</a>
</li>
<li class="file-stats">
<a href="#2f8fee2abca5d63f3b2a113efc849e4e6054c49a">
compiler/basicTypes/MkId.hs
</a>
</li>
<li class="file-stats">
<a href="#ae667aa599c96310c85c0258e4e7d72b00275ae5">
compiler/codeGen/StgCmmForeign.hs
</a>
</li>
<li class="file-stats">
<a href="#c51feff1097e886121a45f5d4b0baf4d9793d59e">
compiler/coreSyn/CoreSyn.hs
</a>
</li>
<li class="file-stats">
<a href="#4cebcede53127700de963abffccad9d336d74889">
compiler/deSugar/DsExpr.hs
</a>
</li>
<li class="file-stats">
<a href="#2b3e067399771b3fa0f5379f12d4dbc25a19252e">
compiler/hsSyn/HsTypes.hs
</a>
</li>
<li class="file-stats">
<a href="#11e9bfd841c4163c1919b5e07efc84740e02010f">
compiler/main/DynFlags.hs
</a>
</li>
<li class="file-stats">
<a href="#6c14b513ade9b691d4a805f6a7de89634d3863ae">
compiler/main/TidyPgm.hs
</a>
</li>
<li class="file-stats">
<a href="#844514241b3e1a009f66bf594cbb57fef61482fb">
compiler/prelude/PrelRules.hs
</a>
</li>
<li class="file-stats">
<a href="#9715ddba4708ba02dac192a1f72fa50717761aff">
compiler/prelude/PrimOp.hs
</a>
</li>
<li class="file-stats">
<a href="#0188aac58d5dfb76292827933bb504a964ed7c01">
compiler/prelude/TysPrim.hs
</a>
</li>
<li class="file-stats">
<a href="#2a8bedbc781353ca3c4d1e56daba6faa8829aaf3">
compiler/prelude/primops.txt.pp
</a>
</li>
<li class="file-stats">
<a href="#a55612b2faf1041b010514ceb222ddf75c15a326">
compiler/rename/RnSource.hs
</a>
</li>
<li class="file-stats">
<a href="#c573dfc3158e7ec41ecc0965becd5f1e6e92a2e6">
compiler/typecheck/TcErrors.hs
</a>
</li>
<li class="file-stats">
<a href="#89165943f253c43100bca06548eba40ff0519ca5">
compiler/typecheck/TcEvidence.hs
</a>
</li>
<li class="file-stats">
<a href="#350c4076427c611b8f14e875a4ca553041c2b847">
compiler/typecheck/TcHsType.hs
</a>
</li>
<li class="file-stats">
<a href="#4c1af4850cb90ab2963edb06b69b57e87ccdf9c1">
compiler/typecheck/TcInstDcls.hs
</a>
</li>
<li class="file-stats">
<a href="#367db94fc37c8c7548dbe545a5302c7a5108e41e">
compiler/typecheck/TcMType.hs
</a>
</li>
<li class="file-stats">
<a href="#75d517f701402b106e4d98d255eb24b57ba72aab">
compiler/typecheck/TcSimplify.hs
</a>
</li>
<li class="file-stats">
<a href="#bdfa0cc139f61d1236abc1598c5d684b43c357f9">
compiler/typecheck/TcTyClsDecls.hs
</a>
</li>
<li class="file-stats">
<a href="#385f906219a06a4d607c6d990b0ea2a1fd047192">
compiler/typecheck/TcTypeable.hs
</a>
</li>
<li class="file-stats">
<a href="#8cd24482c6f44f6736157718a50265828b6b7436">
compiler/types/Coercion.hs
</a>
</li>
<li class="file-stats">
<a href="#07ce9a046fb8ea6659690020b0a8551d94cfdf1c">
compiler/types/Type.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="#604342bbb7e38062a420ad845dcc1280e9d12b2e">
libraries/base/Control/Category.hs
</a>
</li>
<li class="file-stats">
<a href="#3e6d85a9ce8aa3cb5d4b30cb62c64041ae4ae32d">
libraries/base/Data/Coerce.hs
</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/compare/8a27fd4d2b531df1dce7778773ba0e7900d77ad3...5d880cd86324751f435348c8a48573c2e177cf85">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.
</p>
</div>
</body>
</html>