4 years agousers_guide: Various spelling fixes
Ben Gamari [Tue, 16 Jun 2015 18:06:00 +0000 (20:06 +0200)] 
users_guide: Various spelling fixes

Today when reading through the users manual I noticed a few spelling issues.
This prompted me to run the document through ispell which turned up even more
issues. I've tried to be conservative here; most of the corrections are
misspellings and typos but in a few cases I've moved from American to British

Test Plan: Read.

Reviewers: austin

Reviewed By: austin

Subscribers: bgamari, thomie

Differential Revision:

4 years agousers_guide: Various spelling fixes
Ben Gamari [Tue, 16 Jun 2015 18:05:43 +0000 (20:05 +0200)] 
users_guide: Various spelling fixes

Today when reading through the users manual I noticed a few spelling issues.
This prompted me to run the document through ispell which turned up even more
issues. I've tried to be conservative here; most of the corrections are
misspellings and typos but in a few cases I've moved from American to British

Test Plan: Read.

Reviewers: austin

Reviewed By: austin

Subscribers: bgamari, thomie

Differential Revision:

4 years agoLexer: Suggest adding 'let' on unexpected '=' token
Ben Gamari [Tue, 16 Jun 2015 18:04:02 +0000 (20:04 +0200)] 
Lexer: Suggest adding 'let' on unexpected '=' token

I've heard numerous fledgling Haskeller's complain about the behavior of
ghci regarding bindings. While most REPLs accept bindings of the form
`x = 42`, GHCi is implicitly a `do` block, meaning that the user must
know to use a `let` to introduce a binding.

Here we suggest to the user that they may need a `let` and give them a
small example in the event that we find an unexpected `=` token.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie, bgamari

Differential Revision:

4 years agoLexer: Suggest adding 'let' on unexpected '=' token
Ben Gamari [Tue, 16 Jun 2015 18:01:22 +0000 (20:01 +0200)] 
Lexer: Suggest adding 'let' on unexpected '=' token

I've heard numerous fledgling Haskeller's complain about the behavior of
ghci regarding bindings. While most REPLs accept bindings of the form
`x = 42`, GHCi is implicitly a `do` block, meaning that the user must
know to use a `let` to introduce a binding.

Here we suggest to the user that they may need a `let` and give them a
small example in the event that we find an unexpected `=` token.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie, bgamari

Differential Revision:

4 years Update instances of -auto-all
Ben Gamari [Tue, 16 Jun 2015 17:53:14 +0000 (19:53 +0200)] Update instances of -auto-all

-auto-all is now -fprof-auto.

Reviewed By: austin

Differential Revision:

4 years agoFix #10534
Richard Eisenberg [Tue, 16 Jun 2015 01:55:52 +0000 (21:55 -0400)] 
Fix #10534

Test case: typecheck/should_fail/T10534

4 years agoTestsuite: fix framework failure
Thomas Miedema [Mon, 15 Jun 2015 14:19:42 +0000 (16:19 +0200)] 
Testsuite: fix framework failure

I forgot to rename this in 5ddd90415f307cac72d75d86da58e552b168ee30.

4 years agoImproved peak_megabytes_allocated
Simon Peyton Jones [Mon, 15 Jun 2015 13:23:32 +0000 (14:23 +0100)] 
Improved peak_megabytes_allocated

I have no idea why, but lower is good

4 years agoSpelling in comments
Simon Peyton Jones [Mon, 15 Jun 2015 12:33:36 +0000 (13:33 +0100)] 
Spelling in comments

4 years agoGHCi: fix scoping for record selectors
Simon Peyton Jones [Mon, 15 Jun 2015 12:32:48 +0000 (13:32 +0100)] 
GHCi: fix scoping for record selectors

This fixes Trac #10520.  See the "Ugh" note about
record selectors in HscTypes.icExtendGblRdrEnv.

4 years agoRemove derived CFunEqCans after solving givens
Simon Peyton Jones [Mon, 15 Jun 2015 12:23:16 +0000 (13:23 +0100)] 
Remove derived CFunEqCans after solving givens

See Note [The inert set after solving Givens] in TcSMonad.

This fixes Trac #10507.

4 years agoDemonstrate that inferring Typeable for type literals works
Gabor Greif [Mon, 15 Jun 2015 11:30:24 +0000 (13:30 +0200)] 
Demonstrate that inferring Typeable for type literals works

So #10348 is only missing the variable case:
  Known{Nat,Symbol} lit => Typeable lit

4 years agoTest Trac #10348
Gabor Greif [Mon, 15 Jun 2015 09:00:45 +0000 (11:00 +0200)] 
Test Trac #10348

4 years agoIncrease constraint tuple limit to 62 (Trac #10451)
Nick Terrell [Mon, 15 Jun 2015 01:32:22 +0000 (20:32 -0500)] 
Increase constraint tuple limit to 62 (Trac #10451)

  * Increase max constraint tuple size to 62
  * Modify test case to reflect change

Reviewed By: austin

Differential Revision:

GHC Trac Issues: #10451

4 years agoadd type annotations to SrcLoc functions
Ömer Sinan Ağacan [Mon, 15 Jun 2015 01:30:29 +0000 (20:30 -0500)] 
add type annotations to SrcLoc functions

Because sometimes types make more sense than docs.

Reviewed By: austin

Differential Revision:

4 years agoUNREG: fix pprHexVal to emit zeros (#10518)
Sergei Trofimovich [Sun, 14 Jun 2015 15:42:03 +0000 (16:42 +0100)] 
UNREG: fix pprHexVal to emit zeros (#10518)

jakzale on #ghc reported a build failure
when ported GHC on a new target.

The code 'pprHexVal (2^32) W32' emits '0xU'
which is invalid C.

I've introduced bug in
when added literal truncation. That truncation
is a new source of zeros.

Signed-off-by: Sergei Trofimovich <>
Test Plan: added test and tested on UNREG ghc

Reviewers: austin

Reviewed By: austin

Subscribers: thomie, bgamari

Differential Revision:

GHC Trac Issues: #10518

4 years agoTestsuite: add function compile_timeout_multiplier (#10345)
Thomas Miedema [Fri, 12 Jun 2015 11:52:02 +0000 (13:52 +0200)] 
Testsuite: add function compile_timeout_multiplier (#10345)

And rename timeout_multiplier to run_timeout_multiplier.

timeout_multiplier was added in commit
a00389794b839971c7d52ead9e8570bfaa25ac55. The name suggested that it
would affect any test, but it actually only affected tests that had a
run component, and only that run component (as needed by test T367).

Differential Revision:

4 years agoTestsuite: diff non-whitespace normalised output (#10152)
Thomas Miedema [Fri, 12 Jun 2015 14:29:18 +0000 (16:29 +0200)] 
Testsuite: diff non-whitespace normalised output (#10152)

On a test failure, we show a diff between the expected and the actual
output. The method of how we do this has changed a couple of times:

* In 2007: 9951189ccf90b709436fa55ee49eeef031f79f4e
  "On failure, diff the normalised test outputs"

* In 2011: 3019b1e409c129ef7af63e6a7408fb36ec44444b
  "When the output files differ, present the diffs between the *actual*
  output, not the normalised output. The latter may have newlines
  removed, making the diff unreadable."

* In 2015 (now): do something in between.
  - Do apply the normalisers again, to make the diff smaller (only
    showing the actual problem).
  - But don't apply normalise_whitespace, as it indeed makes the diff

Differential Revision:

4 years agoAdd versioning section to Backpack docs.
Edward Z. Yang [Fri, 12 Jun 2015 19:11:41 +0000 (12:11 -0700)] 
Add versioning section to Backpack docs.

Signed-off-by: Edward Z. Yang <>
4 years agoDocs: `-XTypeOperators` (#10175)
Thomas Miedema [Fri, 12 Jun 2015 18:06:31 +0000 (20:06 +0200)] 
Docs: `-XTypeOperators` (#10175)

[skip ci]

4 years agoDocs: it's `gv --orientation=seascape` nowadays (#10497)
Thomas Miedema [Fri, 12 Jun 2015 17:38:03 +0000 (19:38 +0200)] 
Docs: it's `gv --orientation=seascape` nowadays (#10497)

[skip ci]

4 years agoFix typo in `traceShowM` haddock comment (#10392)
Thomas Miedema [Fri, 12 Jun 2015 17:30:36 +0000 (19:30 +0200)] 
Fix typo in `traceShowM` haddock comment (#10392)

[skip ci]

4 years agoDo not copy stack after stack overflow, refix #8435
Flaviu Andrei Csernik (archblob) [Fri, 12 Jun 2015 16:45:55 +0000 (11:45 -0500)] 
Do not copy stack after stack overflow, refix #8435

This was reverted in d70b19bfb5ed79b22c2ac31e22f46782fc47a117
and is a part of the reason for #10445.

Test Plan: validate

Reviewers: ezyang, simonmar, austin

Reviewed By: simonmar, austin

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #8435

4 years agoAdd parseExpr and compileParsedExpr and use them in GHC API and GHCi
Simon Marlow [Fri, 12 Jun 2015 12:15:18 +0000 (13:15 +0100)] 
Add parseExpr and compileParsedExpr and use them in GHC API and GHCi

This commit brings following changes and fixes:

 * Implement parseExpr and compileParsedExpr;
 * Fix compileExpr and dynCompilerExpr, which returned `()` for empty expr;
 * Fix :def and :cmd, which didn't work if `IO` or `String` is not in scope;
 * Use GHCiMonad instead IO in :def and :cmd;
 * Clean PrelInfo: delete dead comment and duplicate entries, add assertion.

See new tests for more details.

Test Plan: ./validate

Reviewers: austin, dterei, simonmar

Reviewed By: simonmar

Subscribers: thomie, bgamari

Differential Revision:

GHC Trac Issues: #10508

4 years agoTestsuite: fix the little known CHECK_FILES_WRITTEN=1
Thomas Miedema [Sat, 30 May 2015 10:33:20 +0000 (12:33 +0200)] 
Testsuite: fix the little known CHECK_FILES_WRITTEN=1

The testsuite driver has a little known feature to check which files
each test writes to, whether there are tests that write to same file,
and whether the tests leave any files behind when CLEANUP=1. It uses
strace under the hood.

This commit fixes some bitrot, and filters out some more strace lines
that we're not interested in (and are shown as framework failures

Differential Revision:

4 years agoSquash typos in comments
Gabor Greif [Mon, 8 Jun 2015 15:15:09 +0000 (17:15 +0200)] 
Squash typos in comments

4 years agodocs: Fix unicode alternatives table (fixes #10509).
Sebastian Reuße [Fri, 12 Jun 2015 08:36:15 +0000 (10:36 +0200)] 
docs: Fix unicode alternatives table (fixes #10509).

The alternatives table gave the wrong glyphs for LEFTWARDS resp.
RIGHTWARDS ARROW-TAIL notation. The listed codepoint was correct,
but the entities corresponded to characters different from those

This also adds the glyphs for LEFTWARDS resp. RIGHTWARDS
DOUBLE ARROW-TAIL, which were formerly missing, and the PROPORTION
glyph, which was formerly given as ASCII.

4 years agoDelete _MSC_VER when not necessary, fix #10511
Bernard Desmyter [Fri, 12 Jun 2015 09:01:45 +0000 (11:01 +0200)] 
Delete _MSC_VER when not necessary, fix #10511

Simplify some preprocessor expressions involving `_MSC_VER` because
`_WIN32` is always defined when `_MSC_VER` is.

Differential Revision:

4 years agoRevert "Change loadSrcInterface to return a list of ModIface"
Edward Z. Yang [Thu, 11 Jun 2015 22:33:59 +0000 (15:33 -0700)] 
Revert "Change loadSrcInterface to return a list of ModIface"

As it turns out, in our new design these changes are no longer
needed. The code is simpler without returning a list of ModIface,
so let's do it!

This reverts commit 8c7d20d8c7e63a1123755aae69cfa825c749e9e8.

4 years agoRevert "Support for multiple signature files in scope."
Edward Z. Yang [Thu, 11 Jun 2015 22:24:27 +0000 (15:24 -0700)] 
Revert "Support for multiple signature files in scope."

This reverts commit a7524eaed33324e2155c47d4a705bef1d70a2b5b.

4 years agoRemove redundant tcg_visible_orphan_mods, it is recorded in imp_orphs.
Edward Z. Yang [Wed, 3 Jun 2015 22:29:00 +0000 (15:29 -0700)] 
Remove redundant tcg_visible_orphan_mods, it is recorded in imp_orphs.

Signed-off-by: Edward Z. Yang <>
Test Plan: validate

Reviewers: simonpj, austin

Subscribers: bgamari, thomie

Differential Revision:

4 years agoAdd failing test for #9562.
Edward Z. Yang [Thu, 11 Jun 2015 21:57:50 +0000 (14:57 -0700)] 
Add failing test for #9562.

Signed-off-by: Edward Z. Yang <>
4 years agoRemoves all occurrences of __MINGW32__ (#10485)
Thomas Miedema [Thu, 11 Jun 2015 18:31:24 +0000 (20:31 +0200)] 
Removes all occurrences of __MINGW32__ (#10485)

In Haskell files, replace `__MINGW32__` by `mingw32_HOST_OS`.

In .c and .h files, delete `__MINGW32__` when `_WIN32` is also tested
because `_WIN32` is always defined when `__MINGW32__` is. Also replace
`__MINGW32__` by `_WIN32` when used standalone for consistency.

Differential Revision:

4 years agoTravis: use apt-get -q
Thomas Miedema [Fri, 5 Jun 2015 10:53:51 +0000 (12:53 +0200)] 
Travis: use apt-get -q

[skip ci]

4 years agoTestsuite: change some expect_fail tests to expect_broken
Thomas Miedema [Wed, 3 Jun 2015 13:15:57 +0000 (15:15 +0200)] 
Testsuite: change some expect_fail tests to expect_broken

Change the following tests from expect_fail to expect_broken: and list
the ticket number:

    * driver/sigof03m/sigof03 (#9252)
    * driver/static001 (#8127)
    * partial-sigs/should_compile/EqualityConstraint (#9478)
    * partial-sigs/should_compile/ExtraNumAMROn (#9478)
    * partial-sigs/should_compile/PatBind2 (#9478)
    * partial-sigs/should_fail/TidyClash2 (#9478)
    * simplCore/should_compile/T8832 (#8832)

The following tests are still marked as expect_fail, but it is not
clearly documented why so:

    * gadt/lazypatok
    * indexed-types/should_fail/SkolemOccursLoop

All other expect_fail tests are only expected to fail on either a
certain platform/os or for a certain way only.

Differential Revision:

4 years agoTestsuite: mention the existence of ticket #10510
Thomas Miedema [Thu, 11 Jun 2015 11:46:41 +0000 (13:46 +0200)] 
Testsuite: mention the existence of ticket #10510

[skip ci]

4 years agoTestsuite: mark T4945 as expect_broken (#4945)
Thomas Miedema [Thu, 11 Jun 2015 15:25:47 +0000 (17:25 +0200)] 
Testsuite: mark T4945 as expect_broken (#4945)

In commit 7d519dabd2006c9742e82fce02df55704da15482, the file
T4945.stdout was added to the repository, to make T4945 pass
validatation presumably.

When that test produces output however, there is a bug somewhere, and we
shouldn't hide it. There is a comment in the Makefile which says:

    "When SpecConstr works there are no STUArrays at all"

So here we remove T4945.stdout again, mark T4945 as expect_broken, and
reopen the ticket.

Differential Revision:

4 years agoTestsuite: mark tests as expect_broken on win64
Thomas Miedema [Thu, 11 Jun 2015 17:28:03 +0000 (19:28 +0200)] 
Testsuite: mark tests as expect_broken on win64

Tickets: #1407, #9381, #9878.

Differential Revision:

4 years agoTestsuite Windows: fix T8172 (#8172)
Thomas Miedema [Thu, 11 Jun 2015 17:26:11 +0000 (19:26 +0200)] 
Testsuite Windows: fix T8172 (#8172)

Use the new function `normalise_drive_letter` to change D:\ to C:\
before comparing outputs.

4 years agoUpdate submodule process to master
Thomas Miedema [Thu, 11 Jun 2015 17:24:25 +0000 (19:24 +0200)] 
Update submodule process to master

This allows a warning free build on Windows, and thus an error free

4 years agoFix DWARF generation for MinGW (#10468)
Peter Wortmann [Thu, 11 Jun 2015 17:09:55 +0000 (12:09 -0500)] 
Fix DWARF generation for MinGW (#10468)

Fortunately this is relatively straightforward - all we need to do is
switch to a non-ELF-specific way of specifying object file sections and
make sure that section-relative addresses work correctly. This is enough
to make "gdb" work on MinGW builds.

4 years agoIndTypesPerfMerge no longer seems to requre -M20M
Simon Peyton Jones [Thu, 11 Jun 2015 07:54:27 +0000 (08:54 +0100)] 
IndTypesPerfMerge no longer seems to requre -M20M

4 years agoAnother major improvement of "improvement"
Simon Peyton Jones [Thu, 7 May 2015 08:07:51 +0000 (09:07 +0100)] 
Another major improvement of "improvement"

I wasn't very happy with my fix to Trac #10009. This is much better.

The main idea is that the inert set now contains a "model", which
embodies *all* the (nominal) equalities that we know about, with
a view to exposing unifications.  This requires a lot fewer iterations
of the solver than before.

There are extensive comments in
 TcSMonad:  Note [inert_model: the inert model]
            Note [Adding an inert canonical constraint the InertCans]

The big changes are

  * New inert_model field in InertCans

  * Functions addInertEq, addInertCan deal with adding a
    constraint, maintaining the model

  * A nice improvement is that unification variables can
    unify with fmvs, so that from, say   alpha ~ fmv
    we get              alpha := fmv
    See Note [Orientation of equalities with fmvs] in TcFlatten
    It's still not perfect, as the Note explains

New flag -fconstraint-solver-iterations=n, allows us to control
the number of constraint solver iterations, and in particular
will flag up when it's more than a small number.

Performance is generally slightly better:
T5837 is a lot better for some reason.

4 years agodocs: Fix #10416
Austin Seipp [Wed, 10 Jun 2015 21:43:23 +0000 (16:43 -0500)] 
docs: Fix #10416

This commit fixes #10416 by using an EPS-based file-format for embedding
images in the users guide, as opposed to a png. This is because 'latex'
in some distributions is actually 'pdflatex', which supports reading the
size of PNGs in DVI mode, while traditional latex does not.

Rather than fiddle with the build a whole bunch, it's easy and simple to
just convert the png into a eps file and embed that instead.

But apparently we already had an EPS file, added in
1cce2f51656cfbd8c7933a914a4bd981792aa1e6! But it was quite large, so
instead I used `convert` to shrink it down from 1.7MB to about 20kb, the
same size as the original PDF (by using level3 postscript, which is not
as wasteful.)

Signed-off-by: Austin Seipp <>
Differential Revision:

GHC Trac Issues: #10416

4 years agomake sdist: distclean testsuite for real (#10406)
Thomas Miedema [Tue, 9 Jun 2015 12:31:40 +0000 (14:31 +0200)] 
make sdist: distclean testsuite for real (#10406)

4 years agoBuild: run autoreconf jobs in parallel
Thomas Miedema [Thu, 4 Jun 2015 21:23:19 +0000 (23:23 +0200)] 
Build: run autoreconf jobs in parallel

Running ./boot takes ~20 seconds on my laptop with 2 cores. With this change,
that goes down to a little over 10 seconds. There are 8 files in
total, so max 8 parallel jobs.

Differential Revision:

4 years agoTestsuite: delete expect_fail setups for ghc < 7.1
Thomas Miedema [Wed, 3 Jun 2015 12:55:20 +0000 (14:55 +0200)] 
Testsuite: delete expect_fail setups for ghc < 7.1

This makes it easier to grep for expect_fail in the tests directory.

Differential Revision:

4 years agoTestsuite: delete expect_fail setups for hugs
Thomas Miedema [Wed, 3 Jun 2015 12:48:23 +0000 (14:48 +0200)] 
Testsuite: delete expect_fail setups for hugs

This makes it easier to grep for expect_fail in the tests directory.

Differential Revision:

4 years agoRevert "The test runner now also works under the msys-native Python."
Thomas Miedema [Thu, 4 Jun 2015 08:49:51 +0000 (10:49 +0200)] 
Revert "The test runner now also works under the msys-native Python."

To make the test runner work under msys-native Python...

Commit 5258566ee5c89aa757b0cf1433169346319c018f broke the msys testsuite
driver (#10441). It changed the quoting of `config.compiler` from single
quotes to double quote, which turns out to not be compatible with what
the function `passThroughCmd` expected.

We could fix `passThroughCmd` to handle the case where `config.compiler`
is double quoted, and scatter some notes around to make sure the quoting
done in various places of the testsuite driver stay compatible.

Instead, this commit reverts 101c62e26286353dd3fac1ef54323529b64c9902,
which introdced the function `passThroughCmd` in the first place
(#9626). ezyang reports that doing this revert fixes the testsuite
driver for him using the the following version of msys2:

  msys2-keyring r8.3864337-1

Ideally we'd know what minimum version of msys2 we require, but for now
this fix is better than nothing.

Only gintas ever reported the original problem, and he actually
mentioned shortly afterwards: "This may have been fixed by a recent
release of msys2, but I am not sure."

Differential Revision:

4 years agoAlways force the exception in enqueued commands
Zejun Wu [Tue, 9 Jun 2015 10:42:38 +0000 (05:42 -0500)] 
Always force the exception in enqueued commands

`enqueueCommands` should always force exception in commands. Otherwise
the exception thrown in `:cmd` (e.g. `:cmd return $ head []`) will cause
GHCi to terminate with panic.

Test Plan: `cd testsuite/tests/ghci/ && make`

Reviewed By: austin

Differential Revision:

GHC Trac Issues: #10501

4 years agobuild: Clean testsuite before sdist
Austin Seipp [Thu, 4 Jun 2015 22:10:33 +0000 (17:10 -0500)] 
build: Clean testsuite before sdist

When making the `sdist` tarball, we don't really need anything inside
$(TOP)/testsuite in order to do our thing. So make sure we clean it
first to avoid situations like #10406.

With D917 landed, this can actually avoided entirely by fixing the
official release process to instead build an `sdist` //first// from the
clean git repository and then build that (to fixpoint) and test it. Then
the originall clean tarball can be shipped.

But it's nice to be safe in the general case where someone might want to
(in the future) `sdist` out of their build tree.

Signed-off-by: Austin Seipp <>
Reviewed By: thomie

Differential Revision:

GHC Trac Issues: #10406

4 years agoRefactor wild card renaming
Thomas Winant [Tue, 9 Jun 2015 04:45:48 +0000 (23:45 -0500)] 
Refactor wild card renaming

Refactor wild card error reporting

* Merge `HsWildcardTy` and `HsNamedWildcardTy` into one constructor
  `HsWildCardTy` with as field the new type `HsWildCardInfo`, which has two
  constructors: `AnonWildCard` and `NamedWildCard`.

* All partial type checks are removed from `RdrHsSyn.hs` and are now done
  during renaming in order to report better error messages. When wild cards
  are allowed in a type, the new function `rnLHsTypeWithWildCards` (or
  `rnHsSigTypeWithWildCards`) should be used. This will bring the named wild
  cards into scope before renaming them. When this is not done, renaming will
  trigger "Unexpected wild card..." errors.

  Unfortunately, this has to be done separately for anonymous wild cards
  because they are given a fresh name during renaming, so they will not cause
  an out-of-scope error. They are handled in `tc_hs_type`, as a special case
  of a lookup that fails.

  The previous opt-out approach is replaced with an opt-in approach. No more
  panics because of forgotten checks!

* `[t| _ |]` isn't caught by the above two checks, so it is currently handled
  by a special case. The error message (generated in the `DsM` monad) doesn't
  provide as much context information as the other cases.

* Instead of three (!) functions that walk `HsType`, there is now only one
  pure function called `collectWildCards`.

* Alternative approach: catch all unwanted wild cards in `rnHsTyKi` by looking
  at the `HsDocContext`. This will reduce the number of places to catch
  unwanted wild cards form three to one, and make the error messages more
  uniform, albeit less informative, as the error context for renaming is not
  as informative as the one for type checking. A new constructor of
  `HsDocContext` will be required for pattern synonyms signatures.

  Small problem: currently type-class type signatures can't be distinguished
  from type signatures using the `HsDocContext`.

This requires an update to the Haddock submodule.

Test Plan: validate

Reviewers: goldfire, simonpj, austin

Reviewed By: simonpj

Subscribers: bgamari, thomie, goldfire

Differential Revision:

GHC Trac Issues: #10098

4 years agoRevert "docs: Fix #10416"
Austin Seipp [Tue, 9 Jun 2015 01:39:46 +0000 (20:39 -0500)] 
Revert "docs: Fix #10416"

This causes the buildbots and other users to choke when building the
user documentation, but I haven't figured out why.

This reverts commit dcaaa980dc59202744bb3888d9662f9a7558cdf6.

4 years agoFix for CAF retention when dynamically loading & unloading code
Simon Marlow [Mon, 8 Jun 2015 10:54:51 +0000 (11:54 +0100)] 
Fix for CAF retention when dynamically loading & unloading code

In a situaion where we have some statically-linked code and we want to
load and unload a series of objects, we need the CAFs in the
statically-linked code to be retained indefinitely, while the CAFs in
the dynamically-linked code should be GC'd as normal, so that we can
detect when the code is unloadable.  This was wrong before - we GC'd
CAFs in the static code, leading to a crash in the rare case where we
use a CAF, GC it, and then load a new object that uses it again.

I also did some tidy up: RtsConfig now has a field keep_cafs to
indicate whether we want CAFs to be retained in static code.

4 years agoFix the build when SplitObjs=YES
Thomas Miedema [Sat, 6 Jun 2015 16:47:05 +0000 (18:47 +0200)] 
Fix the build when SplitObjs=YES

The default (perf) build, which sets SplitObjs=YES, was broken with
commit 5dd02864a844bcf6fe0018755ff261affdef3fea.

I accidently removed the wrong `endif`. This should fix it.

4 years agoFix the sdist build
Thomas Miedema [Fri, 5 Jun 2015 20:12:34 +0000 (22:12 +0200)] 
Fix the sdist build

Since commit 824e34e30338b4b1de0ab5467ffd29da4c7c805a, building ghc from
a source distribution doesn't work.

The error is:

    make[3]: *** No rule to make target
    'utils/genprimopcode/dist/build/Lexer.hs', needed by
    'utils/genprimopcode/dist/build/Lexer.o'.  Stop.

This commit fixes that. See note [Implicit rule search algorithm].

Differential Revision:

4 years agoTestsuite: only show output diff when test is expected to pass
Thomas Miedema [Fri, 29 May 2015 13:44:21 +0000 (15:44 +0200)] 
Testsuite: only show output diff when test is expected to pass

Don't let the output of tests that either have missing libraries or are
expected to be broken obscure real failures.

This makes it easier to analyse the testlogs.

The only consequence is that when a test fails because a certain library
isn't installed, you have to check the all.T file in which the test is
defined to actually find out _which_ library that is. Before it would
print something like

    Compile failed (status 256) errors were:

    stm052.hs:10:8: error:
     Could not find module ‘System.Random’
     Use -v to see a list of the files searched for.

And now it doesn't. I think this is an acceptable tradeoff.

Differential Revision:

4 years agodocs: Fix #10416
Austin Seipp [Fri, 5 Jun 2015 20:43:25 +0000 (15:43 -0500)] 
docs: Fix #10416

Apparently this was broken by b30c6012c7552c874281050d40e5a59012b2c5e7,
but I can't reproduce the issue described there at all.

Signed-off-by: Austin Seipp <>
Test Plan: Use my eyes to read the resulting user manual.

Reviewers: hvr, thomie

Reviewed By: thomie

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #10416

4 years agoFix #10489
Richard Eisenberg [Fri, 5 Jun 2015 13:56:21 +0000 (09:56 -0400)] 
Fix #10489

Dang, roles are annoying.

Test case: typecheck/should_compile/T10489

4 years agoMinor code cleanup
Richard Eisenberg [Fri, 5 Jun 2015 13:50:00 +0000 (09:50 -0400)] 
Minor code cleanup

4 years agoFix #10488 by unwrapping type synonyms.
Richard Eisenberg [Thu, 4 Jun 2015 21:05:02 +0000 (17:05 -0400)] 
Fix #10488 by unwrapping type synonyms.

Previously, I had forgotten to unwrap vanilla type synonyms in the
"flattener" that is used around the closed-type-family apartness

Test Plan: validate

Reviewers: austin

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #10488

4 years agoTravis: allow user forks
Thomas Miedema [Sun, 31 May 2015 12:54:30 +0000 (14:54 +0200)] 
Travis: allow user forks

Check for each submodule repository url if the user made its own fork.
If so, use that. Otherwise, fall back on the one from

As suggested by Richard in this mailinglist discussion:

Documentation is at [wiki:TestingPatches#Travis].

Differential Revision:

4 years agoTestsuite: don't show compile/link info for some tests
Thomas Miedema [Fri, 29 May 2015 15:06:58 +0000 (17:06 +0200)] 
Testsuite: don't show compile/link info for some tests

This info is not needed in the testlogs, and was actually making these
tests fail on my machine because of some bug with the timeout program:
[1 of 1] Compiling Main ( OutOfHeap.hs, tmp_T9579_outofheap_rtssome/Main.o )
Linking T9579_outofheap_rtsnone ...

4 years agoTestsuite: ignore `stdcall attribute ignored` (#1288)
Thomas Miedema [Fri, 29 May 2015 19:13:39 +0000 (21:13 +0200)] 
Testsuite: ignore `stdcall attribute ignored` (#1288)

That warning is only shown on some platforms, and is I believe harmless.

4 years agoTestsuite: add/fix cleanup for certain tests
Thomas Miedema [Thu, 28 May 2015 20:00:00 +0000 (22:00 +0200)] 
Testsuite: add/fix cleanup for certain tests

* extra_clean argument should be a list
  Add an assert to prevent regressions.

* properly clean package conf direcories
  They are directories now, which was causing problems.

* properly clean write_interface_* tests
  We were getting these errors:

  [Errno 21] Is a directory: './driver/write_interface_oneshot'
  [Errno 39] Directory not empty: './driver/write_interface_oneshot'
  [Errno 21] Is a directory: './driver/write_interface_make'
  [Errno 39] Directory not empty: './driver/write_interface_make'

* outputdir() is better than -outputdir, as it knows how to (pre)clean

4 years agoMake validate more quiet
Thomas Miedema [Fri, 29 May 2015 11:35:13 +0000 (13:35 +0200)] 
Make validate more quiet

  * By default use V=0, and call the testsuite with VERBOSE=2, which we
    did before only with validate --quiet. This disables printing the
    test commands it runs.

  * When --quiet is used, call the testsuite with VERBOSE=1. This
    disables printing the '====> Scanning' lines, and doesn't print
    which test is being run. So it only prints something when a test
    accidentally prints to stdout or when it fails.

    Don't set this option on Travis, as Travis will cancel a build if it
    doesn't see any output for more than 10 minutes.

  * When --quiet is used, set the new test option NO_PRINT_SUMMARY,
    which skips printing the test summary. Only the list of unexpected
    failures is printed, if there are any. Note that the full summary
    can still be found in testsuite_summary.txt

  * When --quiet is used, don't pass the `-v` flag to `ghc-pkg check`

  * When --quiet is used, don't print the Oops! header. It shoud be
    clear from the list of failing tests that something is wrong.

This is all done to get the most out of 30 lines of logfile. These changes can
be disabled later by simply not passing the --quiet flag to validate.

Differential Revision:

4 years agoBuild: remove more unnecessary CLEANING/=YES checks
Thomas Miedema [Thu, 28 May 2015 10:38:21 +0000 (12:38 +0200)] 
Build: remove more unnecessary CLEANING/=YES checks

All these checks that CLEANING/=YES are no longer needed, because
nowadays $1_$2_PROGNAME is always set explicitly, and $1_$2_PROG isn't.

They were once introduce to allow `make clean` before `./configure`. I
checked, and it still works.

Remove the checks to make the build system a tiny bit shorter, and to
no longer wonder why they are there.

Differential Revision:

4 years agoBuild: remove unnecessary CLEANING/=YES check
Thomas Miedema [Tue, 26 May 2015 19:00:04 +0000 (21:00 +0200)] 
Build: remove unnecessary CLEANING/=YES check

The comment "INPLACE_BIN might be empty if we're distcleaning" is no
longer true, and the check that CLEANING isn't YES isn't necessary.

It was introduced in cd12c32de77ac18a69ed1733a558095567ec5ba8, to
"make repeated 'make distclean' not fail", and and later revised in
39253008705e3ca590afdfa1b87bfbb5a16da7e7. It was needed because
INPLACE_BIN was defined in

Commit 6793a033e1ce41f77316675e8f7aa83196a9b211 however, two days
later, introduced a better solution to this problem: "Move the fixed
paths out of, so cleaning works without configuring"

So here we remove the original comment and check. One less thing to
worry about when trying to understand the build system.

Differential Revision:

4 years agoBuild: ./boot && ./configure && make sdist (#8723)
Thomas Miedema [Wed, 27 May 2015 18:54:36 +0000 (20:54 +0200)] 
Build: ./boot && ./configure && make sdist (#8723)

Make it possible to run `make sdist` right after configure, without completing
a complete build first.

Test Plan:
I compared the contents of the created `.tar.bz2` files in the `sdistprep`
directory, after running `make sdist` both before and after completing a full
build, using `diff -r`. There weren't any differences (after applying the
patches from D914).

Note that the `.tar.bz2` files were not exactly the same size, but they aren't
either when tarring and bzipping the same directory twice. It seems tarring
and bzipping is not deterministic (on my system).

Differential Revision:

4 years agoghc-cabal: don't warn about missing cabal fields
Thomas Miedema [Mon, 1 Jun 2015 17:58:43 +0000 (19:58 +0200)] 
ghc-cabal: don't warn about missing cabal fields

Only print and exit on errors. Warnings of the type
'PackageDistSuspicious' are not very useful.

The following show up in the build logs currently:
  * The 'license' field is missing.
  * No 'maintainer' field
  * No 'category' field
  * 'ghc-options: -O2' is rarely needed. Check that it is giving a real
    benefit and not just imposing longer compile times on your users.

Differential Revision:

4 years agoBuild: make configure and ghc-pkg a bit less chatty
Thomas Miedema [Mon, 1 Jun 2015 12:16:27 +0000 (14:16 +0200)] 
Build: make configure and ghc-pkg a bit less chatty

Only when V=0.

Differential Revision:

4 years agoRe-center perf numbers for haddock.compiler
Thomas Miedema [Wed, 3 Jun 2015 23:42:29 +0000 (01:42 +0200)] 
Re-center perf numbers for haddock.compiler

Phabricator/Harbormaster measured the following allocation numbers for

Expected:     33562468736
June 2nd [1]: 36740649320
Upper bound:  36918715610
June 3rd [2]: 36956620504

So although this test didn't start failing until June 2nd/3rd, the
biggest increase in allocation must have occured sometime before that.

[1] 2f0011aca137055f139bed484302679c10238d55
[2] 942cfa4e3257347dfc4644ce1a8a28db1fb0aee0

Test Plan: validate

Reviewers: austin

Subscribers: bgamari, thomie

Differential Revision:

4 years agoghc-pkg support query by package-key, fixes #9507
Edward Z. Yang [Wed, 3 Jun 2015 17:55:58 +0000 (10:55 -0700)] 
ghc-pkg support query by package-key, fixes #9507

Signed-off-by: Edward Z. Yang <>
Test Plan: validate

Reviewers: austin

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #9507

4 years agoTravis: Send notifications to author and commiter
Joachim Breitner [Thu, 4 Jun 2015 13:22:47 +0000 (15:22 +0200)] 
Travis: Send notifications to author and commiter

This is the Travis default. It should only spam people who have an
GitHub account and are a member of the ghc organization on GitHub, as
noted by thomie on Let's see
how that works out.

4 years agotypo: 'Ture' / 'True'
Sergei Trofimovich [Wed, 3 Jun 2015 20:39:10 +0000 (21:39 +0100)] 
typo: 'Ture' / 'True'

Signed-off-by: Sergei Trofimovich <>
4 years agoMove liftData and use it as a default definition for Lift.
Edward Z. Yang [Fri, 29 May 2015 02:04:37 +0000 (19:04 -0700)] 
Move liftData and use it as a default definition for Lift.

This should make it a lot easier to define Lift instances.
for motivating discussion.

I needed to muck out some code from Quote into Syntax to get
the definition in the right place; but I would argue that code
never really belonged in Quote to begin with.

Signed-off-by: Edward Z. Yang <>
Test Plan: validate

Reviewers: austin, ekmett, goldfire

Subscribers: bgamari, thomie

Differential Revision:

4 years agoAllow Any return in foreign prim, fixes #10460.
Edward Z. Yang [Mon, 1 Jun 2015 18:30:17 +0000 (11:30 -0700)] 
Allow Any return in foreign prim, fixes #10460.

Signed-off-by: Edward Z. Yang <>
Test Plan: validate

Reviewers: simonpj, goldfire, austin

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #10460

4 years agoRefactor RdrName.Provenance, to fix #7672
Simon Peyton Jones [Wed, 3 Jun 2015 10:43:53 +0000 (11:43 +0100)] 
Refactor RdrName.Provenance, to fix #7672

Trac #7672 has a data type T in module A that is in scope
*both* locally-bound *and* imported (with a qualified) name.
The Provenance of a GlobalRdrElt simply couldn't express that
before. Now you can.

In doing so, I flattened out Provenance into GlobalRdrElt,
so quite a lot of modules are touched in a not-very-interesting

4 years agoRemove outdated uBackpack docs.
Edward Z. Yang [Tue, 2 Jun 2015 22:19:21 +0000 (15:19 -0700)] 
Remove outdated uBackpack docs.

Signed-off-by: Edward Z. Yang <>
4 years agoSuggest -H to improve GC productivity, fixes #10474.
Edward Z. Yang [Tue, 2 Jun 2015 18:07:04 +0000 (11:07 -0700)] 
Suggest -H to improve GC productivity, fixes #10474.

Signed-off-by: Edward Z. Yang <>
Test Plan: none

Reviewers: rwbarton, austin

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #10474

4 years agoTypofixes
Gabor Greif [Tue, 2 Jun 2015 21:59:24 +0000 (23:59 +0200)] 

4 years agonewTempName: Do not include pid in basename
Joachim Breitner [Tue, 2 Jun 2015 21:12:43 +0000 (16:12 -0500)] 
newTempName: Do not include pid in basename

The filename of temporary files, especially the basename of C files, can
end up in the output in some form, e.g. as part of linker debug
information. In the interest of bit-wise exactly reproducible
compilation (#4012), the basename of the temporary file no longer
contains random information (it used to ontain the process id).

This is ok, as the temporary directory used contains the pid (see

This patch has been applied to the Debian package (version 7.10.1-5) and
allowed a fully bit-wise reproducible build:

Reviewed By: austin, rwbarton

Differential Revision:

GHC Trac Issues: #4012

4 years agotestsuite: mark test T9938 (#9938) as passing again
Austin Seipp [Tue, 2 Jun 2015 21:07:30 +0000 (16:07 -0500)] 
testsuite: mark test T9938 (#9938) as passing again

Signed-off-by: Austin Seipp <>
4 years agoDetabify a programlisting in the User's Guide (#10425)
Reid Barton [Tue, 2 Jun 2015 20:00:10 +0000 (16:00 -0400)] 
Detabify a programlisting in the User's Guide (#10425)

4 years agoImprove FFI error reporting
Simon Peyton Jones [Tue, 2 Jun 2015 16:37:09 +0000 (17:37 +0100)] 
Improve FFI error reporting

I refactored TcType FFI functions to return Validity rather than Bool,
which turned out to be an easy way to solve Trac #10461.

4 years agobuild: make haddock a bit less chatty
Austin Seipp [Tue, 2 Jun 2015 14:31:52 +0000 (09:31 -0500)] 
build: make haddock a bit less chatty

Haddock outputs well over a thousand lines of file output just to give
its executive summary about coverage. Kill this by default, since we
really don't need it in any setting.

Signed-off-by: Austin Seipp <>
Test Plan: Crossed my fingers.

Reviewers: nomeata, thomie

Reviewed By: thomie

Subscribers: bgamari, thomie

Differential Revision:

4 years agocompiler: make sure we reject -O + HscInterpreted
Austin Seipp [Tue, 19 May 2015 06:56:48 +0000 (01:56 -0500)] 
compiler: make sure we reject -O + HscInterpreted

When using GHCi, we explicitly reject optimization, because the
compilers optimization passes can introduce unboxed tuples, which the
interpreter is not able to handle. But this goes the other way too: using
GHCi on optimized code may cause the optimizer to float out breakpoints
that the interpreter introduces. This manifests itself in weird ways,
particularly if you as an API client use custom DynFlags to introduce
optimization in combination with HscInterpreted.

It turns out we weren't checking for consistent DynFlag settings when
doing `setSessionDynFlags`, as #10052 showed. While the main driver
handled it in `DynFlags` via `parseDynamicFlags`, we didn't check this

This does a little refactoring to split out some of the common code, and
immunizes the various `DynFlags` utilities in the `GHC` module from this
particular bug. We should probably be checking other general invariants

This fixes #10052, and adds some notes about the behavior in `GHC` and

As a bonus, expose `warningMsg` from `ErrUtils` as a helper since it
didn't exist (somehow).

Signed-off-by: Austin Seipp <>
Reviewed By: edsko

Differential Revision:

GHC Trac Issues: #10052

4 years agoTest Trac #10438
Simon Peyton Jones [Tue, 2 Jun 2015 11:43:11 +0000 (12:43 +0100)] 
Test Trac #10438

4 years agoTest Trac #10466
Simon Peyton Jones [Tue, 2 Jun 2015 11:37:27 +0000 (12:37 +0100)] 
Test Trac #10466

4 years agoTest Trac #10451
Simon Peyton Jones [Tue, 2 Jun 2015 10:59:29 +0000 (11:59 +0100)] 
Test Trac #10451

4 years agoTest Trac #10423
Simon Peyton Jones [Tue, 2 Jun 2015 10:38:28 +0000 (11:38 +0100)] 
Test Trac #10423

4 years agoRemove redundant import
Simon Peyton Jones [Tue, 2 Jun 2015 10:37:53 +0000 (11:37 +0100)] 
Remove redundant import

4 years agoSet 32-bit perf figure
Simon Peyton Jones [Mon, 1 Jun 2015 23:48:12 +0000 (00:48 +0100)] 
Set 32-bit perf figure

4 years agoImprove constraint tuples (Trac #10451)
Simon Peyton Jones [Mon, 1 Jun 2015 23:40:44 +0000 (00:40 +0100)] 
Improve constraint tuples (Trac #10451)

* Increase max constraint tuple size to 16
* Produce a civilised error message if the max
  size is exceeded

4 years agoRe-do superclass solving (again); fixes #10423
Simon Peyton Jones [Mon, 1 Jun 2015 23:33:14 +0000 (00:33 +0100)] 
Re-do superclass solving (again); fixes #10423

TcInstDcls.tcSuperClasses was getting increasingly baroque as a
succession of tickets (#10423 being the latest) pointed out that
my cunning plan was not so cunning.

The big issue is how to restrict the evidence that we generate
for superclass constraints in an instance declaration to avoid
superclass loops.  See Note [Recursive superclasses] in TcInstDcls
which explains the plan.

The question is how to implement the plan.  The new implementation is
much neater, and is described in Note [Solving superclass constraints]
in TcInstDcls.

4 years agoMark sigof02 tests as expect_broken
Simon Peyton Jones [Mon, 1 Jun 2015 23:41:54 +0000 (00:41 +0100)] 
Mark sigof02 tests as expect_broken

Consequence of the GlobalRdrEnv refactoring;
see Trac #10472

4 years agoRefactor the GlobalRdrEnv, fixing #7672
Simon Peyton Jones [Mon, 1 Jun 2015 23:02:03 +0000 (00:02 +0100)] 
Refactor the GlobalRdrEnv, fixing #7672

This patch started innocently enough, by deleting a single
call from rnImportDecl, namely

    let gbl_env = mkGlobalRdrEnv (filterOut from_this_mod gres)

The 'filterOut' makes no sense, and was the cause of #7672.

But that little loose end led to into a twisty maze of little
passages, all alike, which has taken me an unreasonably long
time to straighten out. Happily, I think the result is really
much better.

In particular:

 * INVARIANT 1 of the GlobalRdrEnv type was simply not true:
   we had multiple GlobalRdrElts in a list with the same
   gre_name field. This kludgily implmented one form of

 * Meanwhile, extendGlobalRdrEnvRn implemented a second form of
   shadowing, by deleting stuff from the GlobalRdrEnv.

 * In turn, much of this shadowing stuff depended on the Names of
   the Ids bound in the GHCi InteractiveContext being Internal
   names, even though the TyCons and suchlike all had External
   Names. Very confusing.

So I have made the following changes

 * I re-established INVARIANT 1 of GlobalRdrEnv.  As a result
   some strange code in RdrName.pickGREs goes away.

 * RnNames.extendGlobalRdrEnvRn now makes one call to deal with
   shadowing, where necessary, and another to extend the
   environment.  It deals separately with duplicate bindings.

   The very complicated RdrName.extendGlobalRdrEnv becomes much
   simpler; we need to export the shadowing function, now called
   RdrName.shadowNames; and we can nuke
   RdrName.findLocalDupsRdrEnv altogether.

   RdrName Note [GlobalRdrEnv shadowing] summarises the shadowing

 * The Names of the Ids bound in the GHCi interactive context are
   now all External.  See Note [Interactively-bound Ids in GHCi]
   in HscTypes.

 * Names for Ids created by the debugger are now made by
   IfaceEnv.newInteractiveBinder.  This fixes a lurking bug which
   was that the debugger was using mkNewUniqueSupply 'I' to make
   uniques, which does NOT guarantee a fresh supply of uniques on
   successive calls.

 * Note [Template Haskell ambiguity] in RnEnv shows that one TH-related
   error is reported lazily (on occurrences) when it might be better
   reported when extending the environment.  In some (but not all) cases
   this was done before; but now it's uniformly at occurrences.  In
   some ways it'd be better to report when extending the environment,
   but it's a tiresome test and the error is rare, so I'm leaving it
   at the lookup site for now, with the above Note.

 * A small thing: RnNames.greAvail becomes RdrName.availFromGRE, where
   it joins the dual RdrName.gresFromAvail.

4 years agoTreat pattern-synonym binders more consistently
Simon Peyton Jones [Mon, 1 Jun 2015 22:42:10 +0000 (23:42 +0100)] 
Treat pattern-synonym binders more consistently

Pattern-synonyms are in value declarations, but were being
bound by getLocalNonValBinders.  This seemed odd, and indeed
staightening it out allowed me to remove a field from

The main changes are in RnSource.rnSrcDecls.


4 years agoWhite space only
Simon Peyton Jones [Sat, 30 May 2015 23:06:13 +0000 (00:06 +0100)] 
White space only

4 years agoRe-center perf numbers for T5631
Herbert Valerio Riedel [Mon, 1 Jun 2015 22:48:29 +0000 (17:48 -0500)] 
Re-center perf numbers for T5631

7dd0ea7428379df848e3d13528921b39b7bf5b95 seems to have tipped this one over,
although 7dd0ea74283 itself had only a minimal impact on my local system.

Locally, I measured right before 7dd0ea74283:

  Expected    T5631(normal) bytes allocated: 776121120 +/-5%
  Actual      T5631(normal) bytes allocated: 811973144
  Deviation   T5631(normal) bytes allocated:       4.6 %

and at 7dd0ea74283:

  Expected    T5631(normal) bytes allocated: 776121120 +/-5%
  Actual      T5631(normal) bytes allocated: 812288344
  Deviation   T5631(normal) bytes allocated:       4.7 %

Reviewed By: austin

Differential Revision: