| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
| |
This doesn't change behavior but makes the code a bit easier to follow.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the `checkValidInst` function (used when checking that an instance
declaration is headed by an actual type class, not a type synonym) was using
`tcSplitSigmaTy` to split apart the `forall`s and instance context. This is
incorrect, however, as `tcSplitSigmaTy` expands type synonyms, which can cause
instances headed by quantified constraint type synonyms to be accepted
erroneously.
This patch introduces `splitInstTyForValidity`, a variant of `tcSplitSigmaTy`
specialized for validity checking that does _not_ expand type synonyms, and
uses it in `checkValidInst`.
Fixes #22570.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Lint check for branch compatiblity within an axiom, in
GHC.Core.Lint.compatible_branches was subtly different to the
check made when contructing an axiom, in
GHC.Core.FamInstEnv.compatibleBranches.
The latter is correct, so I killed the former and am now using the
latter.
On the way I did some improvements to pretty-printing and documentation.
|
|
|
|
|
|
|
| |
Here we add acquire and release barriers in readMutVar# and
writeMutVar#, which are necessary for soundness.
Fixes #22468.
|
|
|
|
|
|
|
|
| |
Previously we were just looking at the direct imports to try and work
out what a package qualifier could apply to but #22333 pointed out we
also needed to look for reexported modules.
Fixes #22333
|
|
|
|
|
| |
This is in general unsafe as they may be clobbered if they are mapped to
caller-saved machine registers. See Note [Register parameter passing].
|
| |
|
|
|
|
| |
This is redundant since the TSANUtils.h already defines it.
|
|
|
|
|
|
| |
This introduces a new Cmm pass which instruments the program with
ThreadSanitizer annotations, allowing full tracking of mutator memory
accesses via TSAN.
|
|
|
|
|
|
|
| |
Originally I had thought I would just use the `prim` call syntax instead
of introducing new syntax for atomic loads. However, it turns out that
`prim` call syntax tends to make things quite unreadable. This new
syntax seems quite natural.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Any comments immediately preceding the first declaration are no longer
kept as header comments, but attach to the first declaration instead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As discovered in #22272, dehydration of the unfolding info of a
recursive definition used to involve a traversal of the definition
itself, which in turn involves traversing the unfolding info. Hence,
a loop.
Instead, we now store enough data in the interface that we can produce
the unfolding info without this traversal. See Note [Tying the 'CoreUnfolding' knot]
for details.
Fixes #22272
Co-authored-by: Simon Peyton Jones <simon.peytonjones@gmail.com>
|
|
|
|
|
|
|
|
| |
We were missing a call to `decideBangHood` in the pattern-match checker.
There is another call in `matchWrapper.mk_eqn_info` which seems redundant
but really is not; see `Note [Desugaring -XStrict matches in Pmc]`.
Fixes #21761.
|
|
|
|
|
|
|
| |
This issues seems to have been fixed since the ticket was made, so let's
add a test and move on.
Fixes #21476
|
| |
|
| |
|
|
|
|
| |
CLC proposal https://github.com/haskell/core-libraries-committee/issues/99
|
|
|
|
|
|
|
| |
UnboxedSums is quite confusingly implied by UnboxedTuples, alas, just
the way it is.
See #22485
|
|
|
|
| |
Also updates the bootstrap jobs to test booting 9.2 and 9.4.
|
|
|
|
|
|
| |
This updates the build plans for the most recent compiler versions, as
well as fixing the hadrian-bootstrap-gen script to a specific GHC
version.
|
|
|
|
|
| |
I am not sure this job is good because it requires booting HEAD with
HEAD, but it should be fine.
|
|
|
|
|
|
|
|
| |
We were not setting the UnitId before rehydrating modules which just led
to us attempting to find things in the wrong HPT. The test for this is
the hadrian-multi command (which is now added as a CI job).
Fixes #22222
|
| |
|
|
|
|
|
| |
Before we were putting all the interface files in the same directory
which was leading to collisions if the files were called the same thing.
|
|
|
|
|
|
| |
This contains a fix necessary for the multi-repl to work on GHC's code
base where we try to load containers and template-haskell into the same
session.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Top-level declaration splices can having surprising interactions with
`INCOHERENT` instances, as observed in #22492. This patch
resolves #22492 by documenting this strange interaction in the GHC User's
Guide.
[ci skip]
|
| |
|
|
|
|
|
|
|
|
|
| |
* The SourceText of primitive characters 'a'# did not include
the #, unlike for other primitive literals 1#, 1##, 1.0#, 1.0##, "a"#.
We can now remove the function pp_st_suffix, which was a hack
to add the # back.
* Negative primitive literals shouldn't use parentheses, as described in
Note [Printing of literals in Core]. Added a testcase to T14681.
|
|
|
|
|
| |
It is a relic of the Make build system. The RTS now uses a
`package.conf` file generated the usual way by Cabal.
|
|
|
|
|
|
|
|
|
| |
... thus fixing #22549.
The details are in the refurbished and no longer dead
`Note [Do not strictify a DFun's parameter dictionaries]`.
There's a regression test in T22549.
|
|
|
|
|
|
|
| |
I copied the fusion framework we have in place for `take`.
T18964 asserts that we regress neither when fusion fires nor when it doesn't.
Fixes #18964.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was some confusion in Data.Typeable about which module certain
wired-in things were defined in. Just because something is wired-in
doesn't mean it comes from GHC.Prim, in particular things like LiftedRep
and RuntimeRep are defined in GHC.Types and that's the end of the story.
Things like Int#, Float# etc are defined in GHC.Prim as they have no
Haskell definition site at all so we need to generate type
representations for them (which live in GHC.Types).
Fixes #22510
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
So that we get to cancel away the allocation for the lazily used base.
We can move `powImpl` (which *is* strict in the base) to the top-level
so that we don't duplicate too much code and move the SPECIALISATION
pragmas onto `powImpl`.
The net effect of this change is that `(^)` plays along much better with
inlining thresholds and loopification (#22227), for example in `x2n1`.
Fixes #22324.
|
| |
|
| |
|
| |
|
| |
|