| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
$ ghc -c foo.bar
Warning: the following files would be used as linker inputs, but linking is not being done: foo.bar
ghc: no input files
Usage: For basic information, try the `--help' option.
|
|
|
|
|
|
|
|
|
|
| |
The problem here is caused by the fact that info tables include a
relative offset to the string naming the constructor. Executable
memory now resides at two places in the address space: one for writing
and one for executing. In the info tables generated by GHCi, we were
calculating the offset relative to the writable instance, rather than
the executable instance, which meant that the GHCi debugger couldn't
find the names for constructors it found in the heap.
|
| |
|
| |
|
|
|
|
|
|
| |
The GHC front end never generates (ExplicitList []), but TH can.
This patch makes the typechecker robust to such programs.
|
|
|
|
|
|
| |
When converting an empty do-block from TH syntax to HsSyn,
complain rather than crashing.
|
| |
|
| |
|
|
|
|
| |
It is now a dynamic flag
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch does a lot of tidying up of the way that dead variables are
handled in Core. Just the sort of thing to do on an aeroplane.
* The tricky "binder-swap" optimisation is moved from the Simplifier
to the Occurrence Analyser. See Note [Binder swap] in OccurAnal.
This is really a nice change. It should reduce the number of
simplifier iteratoins (slightly perhaps). And it means that
we can be much less pessimistic about zapping occurrence info
on binders in a case expression.
* For example:
case x of y { (a,b) -> e }
Previously, each time around, even if y,a,b were all dead, the
Simplifier would pessimistically zap their OccInfo, so that we
can't see they are dead any more. As a result virtually no
case expression ended up with dead binders. This wasn't Bad
in itself, but it always felt wrong.
* I added a check to CoreLint to check that a dead binder really
isn't used. That showed up a couple of bugs in CSE. (Only in
this sense -- they didn't really matter.)
* I've changed the PprCore printer to print "_" for a dead variable.
(Use -dppr-debug to see it again.) This reduces clutter quite a
bit, and of course it's much more useful with the above change.
* Another benefit of the binder-swap change is that I could get rid of
the Simplifier hack (working, but hacky) in which the InScopeSet was
used to map a variable to a *different* variable. That allowed me
to remove VarEnv.modifyInScopeSet, and to simplify lookupInScopeSet
so that it doesn't look for a fixpoint. This fixes no bugs, but
is a useful cleanup.
* Roman pointed out that Id.mkWildId is jolly dangerous, because
of its fixed unique. So I've
- localied it to MkCore, where it is private (not exported)
- renamed it to 'mkWildBinder' to stress that you should only
use it at binding sites, unless you really know what you are
doing
- provided a function MkCore.mkWildCase that emodies the most
common use of mkWildId, and use that elsewhere
So things are much better
* A knock-on change is that I found a common pattern of localising
a potentially global Id, and made a function for it: Id.localiseId
|
|
|
|
|
| |
The ghc executable name doesn't have a version number on Windows, so
don't put one in the script.
|
| |
|
| |
|
|
|
|
|
| |
Fixes a long-standing bug that could in some cases cause sub-optimal
scheduling behaviour.
|
|
|
|
|
|
| |
We now need to dig the appropriate lines out of packages, rather than
just catting libraries/extra-packages, in order to find out what the
extralibs are.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
We don't want to require that users building source dists have alex/happy
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Ticket #1995: Unsoundness with newtypes
- Ticket #2475: "Can't unify" error when stopped at an exception
In addition this patch adds the following:
- Unfailingness: RTTI cannot panic anymore.
In case of failure, it recovers gracefully by returning the "I know nothing" type
- A -ddump-rtti flag
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds support for raw token streams, that contain more
information than normal token streams (they contains comments at
least). The "lexTokenStream" function brings this support to the
Lexer module. In addition to that, functions have been added to
the GHC module to make easier to recover of the token stream of
a module ("getTokenStream").
Building on that, I added what could be called "rich token
stream": token stream to which have been added the source string
corresponding to each token, the function addSourceToToken takes
a StringBuffer and a starting SrcLoc and a token stream and build
this rich token stream. getRichTokenStream is a convenience
function to get a module rich token stream. "showRichTokenStream"
use the SrcLoc information in such a token stream to get a string
similar to the original source (except unsignificant
whitespaces). Thus "putStrLn . showRichTokenStream =<<
getRichTokenStream s mod" should print a valid module source, the
interesting part being to modify the token stream between the get
and the show of course.
|
| |
|
| |
|
|
|
|
|
|
| |
Now that the Cabal file is generated by configure, it would be nice
if clean worked even if the cabal file is missing. So now we just rm -rf
the dist directory.
|
|
|
|
| |
This allows us to put the proper version number into them
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This bug has been hanging around for a long time, as you'll see by its
number. The fix implements a feature that is really needed by SYB3, to
allow an instance to (rather indirectly) refer to itself. The trickiness
comes when solving the superclass constraints.
The whoel issue is explained in Note [Recursive instances and superclases]
in TcSimplify.
In cracking this one I found I could remove the WantSCs argument to the
ReduceMe flag, which is a worthwhile simplification. Good!
|
| |
|
|
|
|
|
|
|
| |
The DPH library tripped an ASSERT. The code is actually OK, but it's
badly-optimised so I changed it to WARN. The issue here is explained
in ClosureInfo, Note [Unsafe coerce complications].
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
I was perplexed about why an arity-related WARN was tripping. It took
me _day_ (sigh) to find that it was because SimplEnv.substExpr was taking
a short cut when the substitution was empty, thereby not subsituting for
Ids in scope, which must be done (CoreSubst Note [Extending the Subst]).
The fix is a matter of deleting the "optimisation". Same with
CoreSubst.substSpec, although I don't know if that actually caused a
probem.
|
|
|
|
|
|
| |
We like things with high arity, so when doing eta reduction
it's probably a good idea to avoid reducing arity.
|
|
|
|
|
|
|
|
|
|
| |
This warning tests that the arity of a function does not decrease.
And that it's at least as great as the strictness signature.
Failing this test isn't a disater, but it's distinctly odd and
usually indicates that not enough information is getting propagated
around, and hence you may get more simplifier iterations.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
If you say -ddump-xx we effectively add -fforce-recomp, so that you
see your dump output. But this works badly in --make mode, because
you get the ddump output for every module, which is probably not what
you want. This patch forces recompilation with -ddump-X only in one-shot
mode.
Of course, this only affects people using -ddump options.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Having 2.0.1 causes some unicode tests to fail
|
| |
|