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:

4 years agoDon't call DEAD_WEAK finalizer again on shutdown (#7170)
Simon Marlow [Mon, 1 Jun 2015 20:34:02 +0000 (21:34 +0100)] 
Don't call DEAD_WEAK finalizer again on shutdown (#7170)

There's a race condition like this:

  # A foreign pointer gets promoted to the last generation
  # It has its finalizer called manually
  # We start shutting down the runtime in `hs_exit_` from the main
  # A minor GC starts running (`scheduleDoGC`) on one of the threads
  # The minor GC notices that we're in `SCHED_INTERRUPTING` state and
    advances to `SCHED_SHUTTING_DOWN`
  # The main thread tries to do major GC (with `scheduleDoGC`), but it
    exits early because we're in `SCHED_SHUTTING_DOWN` state
  # We end up with a `DEAD_WEAK` left on the list of weak pointers of
    the last generation, because it relied on major GC removing it from
    that list

This change:
  * Ignores DEAD_WEAK finalizers when shutting down
  * Makes the major GC on shutdown more likely
  * Fixes a bogus assert

Test Plan:
before this diff
reproduced and after it doesn't

Reviewers: ezyang, austin, simonmar

Reviewed By: simonmar

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #7170

4 years agoNewline after type of allocate().
Edward Z. Yang [Mon, 1 Jun 2015 18:37:01 +0000 (11:37 -0700)] 
Newline after type of allocate().

Signed-off-by: Edward Z. Yang <>
4 years agoAdd (failing) test case for #7672.
Edward Z. Yang [Mon, 1 Jun 2015 17:39:48 +0000 (10:39 -0700)] 
Add (failing) test case for #7672.

Signed-off-by: Edward Z. Yang <>
4 years agoTypofix: missing period. (#10460)
Edward Z. Yang [Mon, 1 Jun 2015 17:05:46 +0000 (10:05 -0700)] 
Typofix: missing period. (#10460)

Signed-off-by: Edward Z. Yang <>
4 years agoAdd information about allowed foreign prim args, see #10460.
Edward Z. Yang [Mon, 1 Jun 2015 16:46:20 +0000 (09:46 -0700)] 
Add information about allowed foreign prim args, see #10460.

Signed-off-by: Edward Z. Yang <>
4 years agoReplace tabs with spaces.
Edward Z. Yang [Mon, 1 Jun 2015 16:33:14 +0000 (09:33 -0700)] 
Replace tabs with spaces.

Signed-off-by: Edward Z. Yang <>
4 years agoComments only
Simon Peyton Jones [Mon, 1 Jun 2015 07:57:23 +0000 (08:57 +0100)] 
Comments only

4 years agoUse named fields in SimplCont.Select constructor
Simon Peyton Jones [Mon, 1 Jun 2015 07:57:01 +0000 (08:57 +0100)] 
Use named fields in SimplCont.Select constructor

Just refactoring

4 years agoAdd some missing seqs to Coercion.seqCo
Simon Peyton Jones [Mon, 1 Jun 2015 07:51:42 +0000 (08:51 +0100)] 
Add some missing seqs to Coercion.seqCo

4 years agoMove seqExpr, seqIdInfo etc to CoreUtils
Simon Peyton Jones [Mon, 1 Jun 2015 07:51:10 +0000 (08:51 +0100)] 
Move seqExpr, seqIdInfo etc to CoreUtils

Refactoring only : it just brings some scattered "seq" code together

4 years agoUse seq rather than (==) to force the size
Simon Peyton Jones [Mon, 1 Jun 2015 07:49:09 +0000 (08:49 +0100)] 
Use seq rather than (==) to force the size

Just a minor refactoring

4 years agoFix dropped event registrations
Ben Gamari [Mon, 1 Jun 2015 07:27:30 +0000 (02:27 -0500)] 
Fix dropped event registrations

D347 introduced a bug wherein the event manager would drop registrations that
should be retained during processing. This occurs when an fd has multiple
registrations, not all of which fire, as well as the case of multi-shot

I also do some general house-keeping, try to better document things, and fix a
bug which could result in unnecessary calls to `epoll_ctl`

Reviewed By: austin

Differential Revision:

GHC Trac Issues: #10317

4 years agoAdd constraint creation functions to TcPluginM API
Adam Gundry [Mon, 1 Jun 2015 12:36:57 +0000 (13:36 +0100)] 
Add constraint creation functions to TcPluginM API

This extends the TcPluginM API with functions to create new constraints,
as described here:

Test Plan: validate and hope

Reviewers: austin, yav, christiaanb

Reviewed By: christiaanb

Subscribers: bgamari, thomie

Differential Revision:

4 years agoApiAnnotations : strings in warnings do not return SourceText
Alan Zimmerman [Mon, 1 Jun 2015 12:16:41 +0000 (14:16 +0200)] 
ApiAnnotations : strings in warnings do not return SourceText

The strings used in a WARNING pragma are captured via

    strings :: { Located ([AddAnn],[Located FastString]) }
        : STRING { sL1 $1 ([],[L (gl $1) (getSTRING $1)]) }

The STRING token has a method getSTRINGs that returns the original
source text for a string.

A warning of the form

    {-# WARNING Logic
              , mkSolver
              , mkSimpleSolver
              , mkSolverForLogic
              , solverSetParams
              , solverPush
              , solverPop
              , solverReset
              , solverGetNumScopes
              , solverAssertCnstr
              , solverAssertAndTrack
              , solverCheck
              , solverCheckAndGetModel
              , solverGetReasonUnknown
              "New Z3 API support is still incomplete and fragile: \
              \you may experience segmentation faults!"

returns the concatenated warning string rather than the original source.

This patch now deals with all remaining instances of getSTRING to bring
in a SourceText for each.

This updates the haddock submodule as well, for the AST change.

Test Plan: ./validate

Reviewers: hvr, austin, goldfire

Reviewed By: austin

Subscribers: bgamari, thomie, mpickering

Differential Revision:

GHC Trac Issues: #10313

4 years agoUpdate binary submodule to release
Herbert Valerio Riedel [Mon, 1 Jun 2015 08:50:17 +0000 (10:50 +0200)] 
Update binary submodule to release

Quoting the changelog, this pulls in the following fixes:


- Fix performance bug that was noticable when you get a big strict ByteString
  and the input to the decoder consists of many small chunks.
- Fix memory leak when decoding Double and Float.
    - Commit 497a181c083fa9faf7fa3aa64d1d8deb9ac76ecb
- We now require QuickCheck >= 2.8. Remove our version of arbitrarySizedNatural.


- Some invalid UTF-8 strings caused an exception when decoded. Those errors will
  now now fail in the Get monad instead. See issue 70.
  Patch contributed by @ttuegel.

4 years agoApiAnnotations : rationalise tests
Alan Zimmerman [Mon, 1 Jun 2015 09:51:27 +0000 (11:51 +0200)] 
ApiAnnotations : rationalise tests

At the moment the API Annotations tests have a driver that has been
copy/pasted multiple times.

Compile it once, and run it for each test case.

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #10452

4 years agorts: Fix aarch64 implementation of xchg
Erik de Castro Lopo [Thu, 28 May 2015 02:57:28 +0000 (02:57 +0000)] 
rts: Fix aarch64 implementation of xchg

In the previous implementation, the `stlxr` instruction clobbered
the value that was supposed to be returned by the the `xchg`

Signed-off-by: Erik de Castro Lopo <>
Test Plan: build on aarch64

Reviewers: austin, bgamari, rwbarton

Subscribers: bgamari, thomie

Differential Revision:

4 years agocompiler/specialise: shut match_co up a bit
Austin Seipp [Mon, 1 Jun 2015 08:45:11 +0000 (03:45 -0500)] 
compiler/specialise: shut match_co up a bit

This stray pprTrace is quite annoying and makes our build logs a bit
bigger (hundreds of lines of occurrences), so we should probably just
get rid of it. Kept under DEBUG for future brave hackers.

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

Differential Revision:

4 years agoIn ghci linker, link against all previous temp sos (#10322)
Reid Barton [Tue, 19 May 2015 06:23:59 +0000 (01:23 -0500)] 
In ghci linker, link against all previous temp sos (#10322)

The OS X dlopen() appears to only resolve undefined symbols in
the direct dependencies of the shared library it is loading.

Reviewed By: trommler, austin

Differential Revision:

GHC Trac Issues: #10322

4 years agoCatch canonicalizePath exceptions, fix #10101
Flaviu Andrei Csernik (archblob) [Mon, 1 Jun 2015 07:13:36 +0000 (02:13 -0500)] 
Catch canonicalizePath exceptions, fix #10101

Introduce by #95 'canonicalizePath' throws and exception when given
an invalid file in a call to 'sameFile'.

There are two cases when this can happen when using ghci:
  1) If there is an error at the interactive prompt, "<interactive>"
     file is searched for and not found.
  2) If there is an error in any loaded file and editing an inexistent/new
     file with 'e: foo'.

Both cases are now tested.

Test Plan: validate

Reviewers: austin, #ghc

Reviewed By: austin, #ghc

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #10101

4 years agoTravis: use validate --quiet to prevent hitting log file limits
Thomas Miedema [Sun, 31 May 2015 11:11:03 +0000 (13:11 +0200)] 
Travis: use validate --quiet to prevent hitting log file limits

Currently, this will use `make -s` instead of `make`, such that `make`
doesn't echo the commands it's going to run. And second, it calls the
testdriver with a lower verbosity, such that the shell commands it runs
don't get printed either.

4 years agoDon't run T9330fail on Windows, no clobber occurs. #9930
Edward Z. Yang [Sun, 31 May 2015 05:40:35 +0000 (22:40 -0700)] 
Don't run T9330fail on Windows, no clobber occurs. #9930

Signed-off-by: Edward Z. Yang <>
4 years agolinker_unload working on Windows, fixes #8292.
Edward Z. Yang [Sun, 31 May 2015 05:15:39 +0000 (22:15 -0700)] 
linker_unload working on Windows, fixes #8292.

Signed-off-by: Edward Z. Yang <>
4 years agoBuild system: don't build runghc if GhcWithInterpreter=NO (#10261)
Thomas Miedema [Thu, 28 May 2015 17:34:15 +0000 (19:34 +0200)] 
Build system: don't build runghc if GhcWithInterpreter=NO (#10261)

To test:
  * run `make clean` in utils/runghc
  * make sure inplace/bin doesn't contain runghc
  * set GhcWithInterpreter=NO in
  * run `make`
  * note that inplace/bin doesn't contain runghc

It won't be installed either, nor will runhaskell.

Differential Revision:

4 years agoBuild system: also clean the inplace wrapper
Thomas Miedema [Thu, 28 May 2015 17:26:44 +0000 (19:26 +0200)] 
Build system: also clean the inplace wrapper

Running `make clean` inside `utils/runghc` now does:
    "rm" -rf utils/runghc/dist-install
    "rm" -rf inplace/bin/runghc
    "rm" -rf inplace/lib/bin/runghc

Instead of just:
    "rm" -rf utils/runghc/dist-install
    "rm" -rf inplace/lib/bin/runghc

I think this was just an oversight.

[skip ci]

Differential Revision:

4 years agoBuild system: don't use supposedly local variable inside macro
Thomas Miedema [Thu, 28 May 2015 16:59:29 +0000 (18:59 +0200)] 
Build system: don't use supposedly local variable inside macro

There is no support for local variables inside `make` macros (defined
using the `define` keyword), see

In this case `make show VALUE=INPLACE_WRAPPER` would print some bogus
value ("inplace/bin/mkUserGuidePart" actually, from the last BUILD_DIRS
entry in that calls shell-wrapper), and using that variable
somewhere might be a bug.

Test Plan:
I checked the rules directory with the following crude regexp, and this
seems the be the only real offender.

    grep -P '^[^ $#\t][^$]*[^+]=' rules/*

What it is supposed to do (from right to left):
  * look for variable assignments
  * but not updates (+=)
  * where the variable name doesn't contain any dollar signs
  * and the line doesn't start with whitespace or a comment

[skip ci]

Differential Revision:

4 years agoBuild system: make clean in utils/ghc-pkg should not delete inplace/lib/bin
Thomas Miedema [Thu, 28 May 2015 09:57:07 +0000 (11:57 +0200)] 
Build system: make clean in utils/ghc-pkg should not delete inplace/lib/bin

Make sure $1_$2_PROG always gets assigned a value, even when cleaning.

The problem with not setting the variable becomes apparent when looking
at the following two lines of code:

  $1_$2_INPLACE = $$(INPLACE_LIB)/bin/$$($1_$2_PROG)
  $(call clean-target,$1,$2_inplace,$$($1_$2_INPLACE))

So running `make clean` in for example `utils/ghc-pkg` deletes
`inplace/lib/bin/` instead of `inplace/lib/bin/ghc-pkg`.

The offending code was introduced in commit

There is one small implication. When cleaning before configure, the
variable $1_$2_PROG will now be assigned a slightly wrong value, because
exeext$3 isn't known yet. But I think that's ok, as no files have been
build yet, so it will just try to delete a slighly different nonexistent

[skip ci]

Differential Revision:

4 years agoBuild system: always use `make -r`
Thomas Miedema [Wed, 20 May 2015 17:57:57 +0000 (19:57 +0200)] 
Build system: always use `make -r`

Do what this comment was suggesting:

    "Ideally we'd like to have 'make -r' turned on by default, because
    that disables all the implicit rules, but there doesn't seem to be a
    good way to do that."

This change doesn't seem to have much effect on the time it takes to run
make. Apparently clearing .SUFFIXES was enough for that. But it does
make the output of `make -d` quite a bit shorter, which is nice.

Note: is always called indirectly, so no need to set .SUFFIXES or
MAKEFLAGS there again.

Differential Revision:

4 years agoBuild system: always allow me to clean haddock
Thomas Miedema [Wed, 27 May 2015 19:38:18 +0000 (21:38 +0200)] 
Build system: always allow me to clean haddock

[skip ci]

4 years agoBuild system: time's config files have moved
Thomas Miedema [Wed, 27 May 2015 19:58:40 +0000 (21:58 +0200)] 
Build system: time's config files have moved

[skip ci]

4 years agoBuild system: prevent "./Setup: Command not found"
Thomas Miedema [Tue, 26 May 2015 13:19:08 +0000 (15:19 +0200)] 
Build system: prevent "./Setup: Command not found"

[skip ci]

4 years agoBuild system: prevent "--version: Command not found"
Thomas Miedema [Tue, 26 May 2015 13:15:38 +0000 (15:15 +0200)] 
Build system: prevent "--version: Command not found"

This would happen when running `make clean` before running

[skip ci]

4 years agoBuild system: whitespace and comments only
Thomas Miedema [Tue, 26 May 2015 16:31:43 +0000 (18:31 +0200)] 
Build system: whitespace and comments only

[skip ci]

4 years agoBuild system: don't set CLEANING=NO
Thomas Miedema [Tue, 26 May 2015 14:22:57 +0000 (16:22 +0200)] 
Build system: don't set CLEANING=NO

We only ever check if CLEANING=YES.

[skip ci]

4 years agoBuild system: check $CLEANING instead of $MAKECMDGOALS
Thomas Miedema [Tue, 26 May 2015 14:07:40 +0000 (16:07 +0200)] 
Build system: check $CLEANING instead of $MAKECMDGOALS

To check if we're cleaning, always check the $CLEANING variable, instead
of sometimes $CLEANING, sometimes $MAKECMDGOALS.

[skip ci]

4 years agoBuild system: allow missing for target clean_%
Thomas Miedema [Tue, 26 May 2015 12:50:50 +0000 (14:50 +0200)] 
Build system: allow missing for target clean_%

[skip ci]

4 years agoBuild system: use `mkdir -p` instead of `-mkdir`
Thomas Miedema [Sun, 24 May 2015 10:34:05 +0000 (12:34 +0200)] 
Build system: use `mkdir -p` instead of `-mkdir`

Avoid unnecessary warnings.

[skip ci]

4 years agoBuild system: remove toplevel target `fast`
Thomas Miedema [Fri, 22 May 2015 22:02:22 +0000 (00:02 +0200)] 
Build system: remove toplevel target `fast`

Remove the recently introduced `fast` synonym for `fasttest`, because in
the subdirectories `make fast` already means `make all FAST=YES`.

[skip ci]

4 years agoBuild system: make more targets PHONY
Thomas Miedema [Tue, 26 May 2015 12:49:47 +0000 (14:49 +0200)] 
Build system: make more targets PHONY

[skip ci]

4 years agoTestsuite: accept new output for T2507 and T8959a
Thomas Miedema [Fri, 29 May 2015 21:01:09 +0000 (23:01 +0200)] 
Testsuite: accept new output for T2507 and T8959a

Unbreak the build.

4 years agoAdd liftData function.
Edward Z. Yang [Mon, 4 May 2015 22:24:34 +0000 (15:24 -0700)] 
Add liftData function.

for the proposal and discussion

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

Reviewers: austin

Subscribers: bgamari, thomie

Differential Revision:

4 years agobase: fix #10298 & #7695
Austin Seipp [Tue, 19 May 2015 09:56:40 +0000 (04:56 -0500)] 
base: fix #10298 & #7695

This applies a patch from Reid Barton and Sylvain Henry, which fix a
disasterous infinite loop when iconv fails to load locale files, as
specified in #10298.

The fix is a bit of a hack but should be fine - for the actual reasoning
behind it, see `Note [Disaster and iconv]` for more info.

In addition to this fix, we also patch up the IO Encoding utilities to
recognize several variations of the 'ASCII' encoding (including its
aliases) directly so that GHC can do conversions without iconv. This
allows a static binary to sit in an initramfs.

Authored-by: Reid Barton <>
Authored-by: Sylvain Henry <>
Signed-off-by: Austin Seipp <>
Test Plan: Eyeballed it.

Reviewers: rwbarton, hvr

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #10298, #7695

4 years agoRemove unnecessary loadInterface for TH quoted name.
Edward Z. Yang [Thu, 14 May 2015 22:49:44 +0000 (15:49 -0700)] 
Remove unnecessary loadInterface for TH quoted name.

The load was introduced a32d3e4da0aceb624c958f02cad7327e17ac94db
to fix a bug where deprecations assumed that the name in question
had already had their interface loaded.  The new deprecation
code no longer makes this assumption and just loads the interface,
so this eager load is not necessary.

Verified that TH_reifyType2 continues to work.

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

Reviewers: simonpj, austin

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #10419

4 years agoTestdriver: do not interfer with MinGW path magic (#10449)
Thomas Miedema [Wed, 27 May 2015 13:02:35 +0000 (15:02 +0200)] 
Testdriver: do not interfer with MinGW path magic (#10449)

This should fix the testsuite driver on Windows using the MinGW tools
with a native build of Python.

MinGW automagically converts MinGW-style paths (e.g.
'/c/programs/ghc/bin/ghc') into ordinary Windows paths (e.g.
'C:/programs/ghc/bin/ghc') when a native Windows program is invoked. But
it doesn't do so when those paths are wrapped with a pair of escaped
double quotes.

The fix is to not call `eval` on the paths in Python, which let's us use
one less pair of quotes, and makes MinGW happy.

Reviewers: Rufflewind, austin

Differential Revision:

4 years agoTestdriver: don't use os.popen in config/ghc
Phil Ruffwind [Thu, 28 May 2015 12:14:49 +0000 (14:14 +0200)] 
Testdriver: don't use os.popen in config/ghc

Rewrite config/ghc to use getStdout (which use subprocess.Popen) instead
of os.popen, which is deprecated; this also avoids the use of shell

* Move getStdout to driver/ so both config/ghc and
  driver/ can use it

* Remove support for Python below 2.4, which doesn't have subprocess

Reviewed By: thomie

Differential Revision:

4 years agoApiAnnotations tweaks
Alan Zimmerman [Wed, 27 May 2015 15:50:55 +0000 (17:50 +0200)] 
ApiAnnotations tweaks

A collection of minor updates for the API Annotations.

1. The annotations for the implicity parameter is disconnected in the

    type MPI = ?mpi_secret :: MPISecret

2. In the following, the annotation for one of the commas is disconeected.

    mkPoli = mkBila . map ((,,(),,()) <$> P.base <*> P.pos <*> P.form)

3. In the following, the annotation for the parens becomes disconnected

    data MaybeDefault v where
        SetTo :: forall v . ( Eq v, Show v ) => !v -> MaybeDefault v
        SetTo4 :: forall v a. (( Eq v, Show v ) => v -> MaybeDefault v
                                                -> a -> MaybeDefault [a])

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, thomie, mpickering

Differential Revision:

GHC Trac Issues: #10399

4 years agoBuild system: don't install haddock .t files (#10410)
Thomas Miedema [Sun, 24 May 2015 16:58:19 +0000 (18:58 +0200)] 
Build system: don't install haddock .t files (#10410)

When generating a haddock .t file for a library, don't save it in the
`dist-install/doc` directory for that library, as then it gets copied to
the installation directory during `make install` by `ghc-cabal copy`.
Instead, save it a few directories up; putting it next to
`haddock-prologue.txt` seemed appropriate.

Test Plan: run `make` in `tests/perf/haddock`.

Differential Revision:

4 years agoOmit the static form error for variables not in scope.
Facundo Domínguez [Tue, 26 May 2015 02:08:05 +0000 (21:08 -0500)] 
Omit the static form error for variables not in scope.

Fixes T10446.

The following program

> g = static f

now produces only:

> ...: error
>    Not in scope: 'f'

Before it would also produce a complaint about 'f' not being a top-level

Test Plan: validate

Reviewers: austin

Reviewed By: austin

Subscribers: bgamari, thomie, mboes

Differential Revision:

GHC Trac Issues: #10446

4 years agoFix ghci-way tests of -XStaticPointers.
Facundo Domínguez [Tue, 26 May 2015 02:07:54 +0000 (21:07 -0500)] 
Fix ghci-way tests of -XStaticPointers.

Summary: Add -fobject-code to StaticPointers tests in ghci.

Test Plan: validate

Reviewers: austin

Reviewed By: austin

Subscribers: bgamari, thomie, mboes

Differential Revision:

4 years agoAdd missing name for FFI import (fixes #9950)
erdeszt [Mon, 25 May 2015 14:28:43 +0000 (16:28 +0200)] 
Add missing name for FFI import (fixes #9950)

Signed-off-by: erdeszt <>
Reviewed By: bgamari, thomie

Differential Revision:

4 years agorts: Fix typo in comment
Erik de Castro Lopo [Thu, 21 May 2015 04:11:15 +0000 (14:11 +1000)] 
rts: Fix typo in comment

4 years agoUpdate .mailmap
Thomas Miedema [Tue, 19 May 2015 22:06:02 +0000 (00:06 +0200)] 
Update .mailmap

[skip ci]

4 years agotestsuite: handle missing stats files gracefully (#10305)
Thomas Miedema [Tue, 19 May 2015 17:18:28 +0000 (19:18 +0200)] 
testsuite: handle missing stats files gracefully (#10305)

The following tests would result in framework failures when using a ghc
build with HADDOCK_DOCS=NO in mk/ or mk/

  * haddock.Cabal
  * haddock.base
  * haddock.compiler

Test Plan: run make in tests/perf/haddock

Differential Revision:

4 years agocompiler: kill a stray pprTrace in OccName
Austin Seipp [Sat, 23 May 2015 12:26:55 +0000 (07:26 -0500)] 
compiler: kill a stray pprTrace in OccName

Left in by c89bd681d34d, and otherwise rather annoying during the build!

Signed-off-by: Austin Seipp <>
4 years agotestsuite: commit missing T4945 stdout
Austin Seipp [Sat, 23 May 2015 12:24:50 +0000 (07:24 -0500)] 
testsuite: commit missing T4945 stdout

Simon apparently forgot this it seems.

Signed-off-by: Austin Seipp <>
4 years agoFix a huge space leak in the mighty Simplifier
Simon Peyton Jones [Fri, 22 May 2015 14:04:47 +0000 (15:04 +0100)] 
Fix a huge space leak in the mighty Simplifier

This long-standing, terrible, adn somewhat subtle bug was exposed
by Trac #10370, thanks to Reid Barton's brilliant test case (comment:3).

The effect is large on the Trac #10370 test.
Here is what the profile report says:

 total time  =       24.35 secs   (24353 ticks @ 1000 us, 1 processor)
 total alloc = 11,864,360,816 bytes  (excludes profiling overheads)

 total time  =       21.16 secs   (21160 ticks @ 1000 us, 1 processor)
 total alloc = 7,947,141,136 bytes  (excludes profiling overheads)

The /combined/ effect of the tidyOccName fix, plus this one, is dramtic
for Trac #10370.  Here is what +RTS -s says:

  15,490,210,952 bytes allocated in the heap
   1,783,919,456 bytes maximum residency (20 sample(s))

  MUT     time   30.117s  ( 31.383s elapsed)
  GC      time   90.103s  ( 90.107s elapsed)
  Total   time  120.843s  (122.065s elapsed)

   7,928,671,936 bytes allocated in the heap
      52,914,832 bytes maximum residency (25 sample(s))

  MUT     time   13.912s  ( 15.110s elapsed)
  GC      time    6.809s  (  6.808s elapsed)
  Total   time   20.789s  ( 21.954s elapsed)

- Heap allocation halved
- Residency cut by a factor of more than 30.
- ELapsed time cut by a factor of 6

Not bad!

The details
The culprit was SimplEnv.mkCoreSubst, which used mapVarEnv to do some
impedence-matching from the substitituion used by the simplifier to
the one used by CoreSubst.  But the impedence-mactching was recursive!

  mk_subst tv_env cv_env id_env
    = CoreSubst.mkSubst in_scope tv_env cv_env (mapVarEnv fiddle id_env)

  fiddle (DoneEx e)          = e
  fiddle (DoneId v)          = Var v
  fiddle (ContEx tv cv id e) = CoreSubst.substExpr (mk_subst tv cv id) e

Inside fiddle, in the ContEx case, we may do another whole level of
fiddle.  And so on.  Moreover, UniqFM (which is built on Data.IntMap) is
strict, so the fiddling is done eagerly.  I didn't wok through all the
details but the result is a gargatuan blow-up of entirely unnecessary work.

Laziness would make this go away, I think, but I don't want to mess
with IntMap.  And in any case, the impedence matching is a royal pain.

In the end I simply ceased trying to use CoreSubst.substExpr in the
simplifier, and instead just use simplExpr.  That does mean bit of
duplication; e.g.  new code for simplRules.  But it's not a big deal
and it's far more direct and easy to reason about.

A bit of knock-on refactoring:

 * Data type ArgSummary moves to CoreUnfold.

 * interestingArg moves from CoreUnfold to SimplUtils, and gets a
   SimplEnv argument which can be used when we encounter a variable.

 * simplLamBndrs, addBndrRules move from SimplEnv to Simplify
   (because they now calls simplUnfolding, simplRules resp)

 * SimplUtils.substExpr, substUnfolding, mkCoreSubst die completely

 * In Simplify some several functions that were previously pure
   substitution-based functions are now monadic:
     - addBndrRules, simplRule
     - addCoerce, add_coerce in simplCast

 * In case 2c of Simplify.rebuildCase, there was a pretty disgusting
   expression-substitution taking place for 'rhs'; and we really don't
   want to make that monadic becuase 'rhs' can be big.
   Solution: reduce the arity of the rules for seq.
   See Note [User-defined RULES for seq] in MkId.

4 years agoFix quadratic behaviour in tidyOccName
Simon Peyton Jones [Fri, 22 May 2015 13:46:51 +0000 (14:46 +0100)] 
Fix quadratic behaviour in tidyOccName

In the test program from comment:3 of Trac #10370, it turned out
that 25% of all compile time was going in OccName.tidyOccName!

It was all becuase the algorithm for finding an unused OccName
had a quadratic case.

This patch fixes it.  THe effect is pretty big:

total time  =       34.30 secs   (34295 ticks @ 1000 us, 1 processor)
total alloc = 15,496,011,168 bytes  (excludes profiling overheads)

total time  =       25.41 secs   (25415 ticks @ 1000 us, 1 processor)
total alloc = 11,812,744,816 bytes  (excludes profiling overheads)

4 years agoReduce magic for seqId
Simon Peyton Jones [Fri, 22 May 2015 13:41:54 +0000 (14:41 +0100)] 
Reduce magic for seqId

An upcoming commit means that the RULES for 'seq' get only
one value arg, not two.  This patch prepares for that by

- reducing the arity of seq's built-in rule, to take one value arg
- making 'seq' not inline on the LHS of RULES
- and removing the horrid un-inlining in DsBinds.decomposeRuleLhs

4 years agoWhite space layout only
Simon Peyton Jones [Fri, 22 May 2015 13:33:16 +0000 (14:33 +0100)] 
White space layout only

4 years agoApiAnnotatons : AnnDcolon in wrong place for PatBind
Alan Zimmerman [Thu, 21 May 2015 13:48:07 +0000 (15:48 +0200)] 
ApiAnnotatons : AnnDcolon in wrong place for PatBind

In the following code fragment

    let ls :: Int = undefined

the `::` is attached to the ls function as a whole, rather than to the
pattern on the LHS.

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, thomie, mpickering

Differential Revision:

GHC Trac Issues: #10396

4 years agoApiAnnotations : parens around a context with wildcard loses annotations
Alan Zimmerman [Thu, 21 May 2015 13:05:48 +0000 (15:05 +0200)] 
ApiAnnotations : parens around a context with wildcard loses annotations

In the following code, the extra set of parens around the context end up
with detached annotations.

    {-# LANGUAGE PartialTypeSignatures #-}
    module ParensAroundContext where

    f :: ((Eq a, _)) => a -> a -> Bool
    f x y = x == y

Trac ticket #10354

It turns out it was the TupleTy that was the culprit.

This may also solve #10315

Test Plan: ./validate

Reviewers: hvr, austin, goldfire

Reviewed By: austin

Subscribers: goldfire, bgamari, thomie, mpickering

Differential Revision:

GHC Trac Issues: #10354, #10315

4 years agoApiAnnotations : AST version of nested forall loses forall annotation
Alan Zimmerman [Thu, 21 May 2015 12:13:42 +0000 (14:13 +0200)] 
ApiAnnotations : AST version of nested forall loses forall annotation

When parsing

    {-# LANGUAGE ScopedTypeVariables #-}

    extremumNewton :: forall tag. forall tag1.
                       tag -> tag1 -> Int
    extremumNewton = undefined

the parser creates nested HsForAllTy's for the two forall statements.

These get flattened into a single one in `HsTypes.mk_forall_ty`

This patch removes the flattening, so that API Annotations are not lost in the

Test Plan: ./validate

Reviewers: goldfire, austin, simonpj

Reviewed By: simonpj

Subscribers: bgamari, mpickering, thomie, goldfire

Differential Revision:

GHC Trac Issues: #10278, #10315, #10354, #10363

4 years agoFix binary instance for IfaceLitTy
Simon Peyton Jones [Wed, 20 May 2015 13:26:06 +0000 (14:26 +0100)] 
Fix binary instance for IfaceLitTy

Thanks to Christiaan Baaj for spotting this.

4 years agoBackpack docs: Clarifications from today's Skype call.
Edward Z. Yang [Tue, 19 May 2015 21:57:42 +0000 (14:57 -0700)] 
Backpack docs: Clarifications from today's Skype call.

Signed-off-by: Edward Z. Yang <>
4 years agoFix error messages from open(Binary)TempFileWithDefaultPermissions
Reid Barton [Tue, 19 May 2015 19:34:31 +0000 (15:34 -0400)] 
Fix error messages from open(Binary)TempFileWithDefaultPermissions

Fixes Trac #10430.

4 years agoRevert "compiler: make sure we reject -O + HscInterpreted" (again)
Austin Seipp [Tue, 19 May 2015 12:28:00 +0000 (07:28 -0500)] 
Revert "compiler: make sure we reject -O + HscInterpreted" (again)

Apparently my machine likes this commit, but Harbormaster does not?

This reverts commit b199536be25ea046079587933cc73d0a948a0626.

4 years agoTest Trac #8799, #8555
Simon Peyton Jones [Tue, 19 May 2015 10:48:53 +0000 (11:48 +0100)] 
Test Trac #8799, #8555

4 years agoAdd a TODO FIXME w.r.t. D894
Austin Seipp [Tue, 19 May 2015 09:32:49 +0000 (04:32 -0500)] 
Add a TODO FIXME w.r.t. D894

As Reid mentioned in a comment on D894, the case fixed by this revision
likely isn't really correct, because old ARM binaries could run on newer
machines, meaning we need to detect at runtime whether we need a proper

But in the mean time, this actually stops the build from failing - which
is better off. So we'll just remember this when we fix it in the future.

Signed-off-by: Austin Seipp <>
4 years agoRevert "In ghci linker, link against all previous temp sos (#10322)"
Austin Seipp [Tue, 19 May 2015 08:57:44 +0000 (03:57 -0500)] 
Revert "In ghci linker, link against all previous temp sos (#10322)"

This reverts commit b0b11ad93cf8470caed572dc16e5cf91304fa355.

It apparently made Harbormaster sad.

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 agoIn ghci linker, link against all previous temp sos (#10322)
Reid Barton [Tue, 19 May 2015 06:23:59 +0000 (01:23 -0500)] 
In ghci linker, link against all previous temp sos (#10322)

The OS X dlopen() appears to only resolve undefined symbols in
the direct dependencies of the shared library it is loading.

Reviewed By: trommler, austin

Differential Revision:

GHC Trac Issues: #10322

4 years agoghci: Allow :back and :forward to take counts
Ben Gamari [Tue, 19 May 2015 06:23:47 +0000 (01:23 -0500)] 
ghci: Allow :back and :forward to take counts

These behave like the count arguments of the gdb `up` and `down`
commands, allowing the user to quickly jump around in history.

Reviewed By: austin

Differential Revision:

4 years agoRemove unneeded compatibility with LLVM < 3.6
Michal Terepeta [Tue, 19 May 2015 06:23:03 +0000 (01:23 -0500)] 
Remove unneeded compatibility with LLVM < 3.6

Since GHC requires at least LLVM 3.6, some of the special cases (for,
e.g., LLVM 2.8 or 2.9) in the LLVM CodeGen can be simply removed.

Reviewed By: rwbarton, austin

Differential Revision:

GHC Trac Issues: #10074

4 years agouser guide: correct documentation for -Wall (fixes #10386)
Alexander Eyers-Taylor [Tue, 19 May 2015 06:22:27 +0000 (01:22 -0500)] 
user guide: correct documentation for -Wall (fixes #10386)

This fixes the documentation for -Wall.
As was done previously it leaves out deprecated flags and also
fwarn-safe and fwarn-unsafe. I don't know
if that was intended or not. -fwarn-safe and fwarn-unsafe are
not mentioned on the warnings page at all instead they are
mentioned in the safe haskell section.

Reviewed By: austin

Differential Revision:

GHC Trac Issues: #10386

4 years agoAdd regression test for #10110.
Peter Trommler [Tue, 19 May 2015 06:21:09 +0000 (01:21 -0500)] 
Add regression test for #10110.

Module C imports a from Module A and b from module B. B does not
import anything from A. So if ld is configured to drop DT_NEEDED
tags for libraries it does not depend on no DT_NEEDED tag for the
temporary shared object containing module A is recorded in the temp
SO containing module B. This leads to an undefined symbol when
linking the temp SO for module C.

Fixes #10110.

Reviewed By: austin

Differential Revision:

GHC Trac Issues: #10110

4 years agoincludes/stg/SMP.h: implement simple load_/store_load_barrier on armv6 and older
Sergei Trofimovich [Mon, 18 May 2015 21:22:18 +0000 (22:22 +0100)] 
includes/stg/SMP.h: implement simple load_/store_load_barrier on armv6 and older

Assuming there is no real SMP systems on these CPUs
I've added only compiler barrier (otherwise write_barrier
and friends need to be fixed as well).

Patch also fixes build breakage reported in #10244.

Signed-off-by: Sergei Trofimovich <>
Reviewers: rwbarton, nomeata, austin

Reviewed By: nomeata, austin

Subscribers: bgamari, thomie

Differential Revision:

GHC Trac Issues: #10244

4 years agoMake the "matchable-given" check happen first
Simon Peyton Jones [Wed, 13 May 2015 11:49:13 +0000 (12:49 +0100)] 
Make the "matchable-given" check happen first

This change makes the matchable-given check apply uniformly to
     - constraint tuples
     - natural numbers
     - Typeable
as well as to vanilla class constraints.

See Note [Instance and Given overlap] in TcInteract

4 years agoRefactor tuple constraints
Simon Peyton Jones [Mon, 11 May 2015 22:19:14 +0000 (23:19 +0100)] 
Refactor tuple constraints

Make tuple constraints be handled by a perfectly ordinary
type class, with the component constraints being the
    class (c1, c2) => (c2, c2)

This change was provoked by

  #10359  inability to re-use a given tuple
          constraint as a whole

  #9858   confusion between term tuples
          and constraint tuples

but it's generally a very nice simplification. We get rid of
 -  In Type, the TuplePred constructor of PredTree,
    and all the code that dealt with TuplePreds
 -  In TcEvidence, the constructors EvTupleMk, EvTupleSel

See Note [How tuples work] in TysWiredIn.

Of course, nothing is ever entirely simple. This one
proved quite fiddly.

- I did quite a bit of renaming, which makes this patch
  touch a lot of modules. In partiuclar tupleCon -> tupleDataCon.

- I made constraint tuples known-key rather than wired-in.
  This is different to boxed/unboxed tuples, but it proved
  awkward to have all the superclass selectors wired-in.
  Easier just to use the standard mechanims.

- While I was fiddling with known-key names, I split the TH Name
  definitions out of DsMeta into a new module THNames.  That meant
  that the known-key names can all be gathered in PrelInfo, without
  causing module loops.

- I found that the parser was parsing an import item like
      T( .. )
  as a *data constructor* T, and then using setRdrNameSpace to
  fix it.  Stupid!  So I changed the parser to parse a *type
  constructor* T, which means less use of setRdrNameSpace.

  I also improved setRdrNameSpace to behave better on Exact Names.
  Largely on priciple; I don't think it matters a lot.

- When compiling a data type declaration for a wired-in thing like
  tuples (,), or lists, we don't really need to look at the
  declaration.  We have the wired-in thing!  And not doing so avoids
  having to line up the uniques for data constructor workers etc.
  See Note [Declarations for wired-in things]

- I found that FunDeps.oclose wasn't taking superclasses into
  account; easily fixed.

- Some error message refactoring for invalid constraints in TcValidity

- Haddock needs to absorb the change too; so there is a submodule update

4 years agoDelete commented-out line
Simon Peyton Jones [Mon, 11 May 2015 22:00:45 +0000 (23:00 +0100)] 
Delete commented-out line

4 years agoTest Trac #10248
Simon Peyton Jones [Wed, 13 May 2015 16:11:46 +0000 (17:11 +0100)] 
Test Trac #10248

4 years agoTest Trac #10403
Simon Peyton Jones [Wed, 13 May 2015 16:17:22 +0000 (17:17 +0100)] 
Test Trac #10403

4 years agoTest Trac #10359
Simon Peyton Jones [Wed, 13 May 2015 16:23:06 +0000 (17:23 +0100)] 
Test Trac #10359

4 years agoCmmCommonBlockElim: Improve hash function
Joachim Breitner [Mon, 18 May 2015 08:39:54 +0000 (10:39 +0200)] 
CmmCommonBlockElim: Improve hash function

Previously, the hash function used to cut down the number of block
comparisons did not take local registers into account, causing far too
many similar, but different bocks to be considered candidates for the
(expensive!) comparision.

Adding register to the hash takes CmmCommonBlockElim's share of the
runtime of the example in #10397 from 17% to 2.5%, and eliminates all
unwanted hash collisions.

This patch also replaces the fancy trie by a plain Data.Map. It turned
out to be not performance critical, so this simplifies the code.

Differential Revision:

4 years agoGreatly speed up nativeCodeGen/seqBlocks
Joachim Breitner [Sat, 16 May 2015 15:47:31 +0000 (17:47 +0200)] 
Greatly speed up nativeCodeGen/seqBlocks

When working on #10397, I noticed that "reorder" in
nativeCodeGen/seqBlocks took more than 60% of the time. With this
refactoring, it does not even show up in the profile any more. This
fixes #10422.

Differential Revision:

4 years agoSpeed up elimCommonBlocks by grouping blocks also by outgoing labels
Joachim Breitner [Fri, 15 May 2015 23:22:06 +0000 (01:22 +0200)] 
Speed up elimCommonBlocks by grouping blocks also by outgoing labels

This is an attempt to improve the situation described in #10397, where
the linear scan of possible candidates for commoning up is far too
expensive. There is (ever) more room for improvement, but this is a

Differential Revision:

4 years agoFailing test for #10420 using plugins.
Edward Z. Yang [Fri, 15 May 2015 21:40:37 +0000 (14:40 -0700)] 
Failing test for #10420 using plugins.

Signed-off-by: Edward Z. Yang <>
4 years agoBackpack docs: Rewrite type checking section to have a more concrete plan.
Edward Z. Yang [Wed, 13 May 2015 23:16:39 +0000 (16:16 -0700)] 
Backpack docs: Rewrite type checking section to have a more concrete plan.

Signed-off-by: Edward Z. Yang <>
4 years agoDo not check dir perms when .ghci doesn't exist
Zejun Wu [Thu, 14 May 2015 15:56:51 +0000 (10:56 -0500)] 
Do not check dir perms when .ghci doesn't exist

Do not check dir perms when .ghci doesn't exist, otherwise GHCi will
print some confusing and useless warnings in some cases (e.g. in travis).
This will fix test T8333 and T10408A in travis.

T10408A will be a test case to cover this. And T8333 is changed to be
not affected by this.

Test Plan:
  chmod o+w ~/.ghc
  make TESTS="T8333 T10408A T10408B"
  chmod o-w ~/.ghc

Reviewers: austin, nomeata

Differential Revision:

4 years agoRevert multiple commits
Austin Seipp [Thu, 14 May 2015 15:55:03 +0000 (10:55 -0500)] 
Revert multiple commits

This reverts multiple commits from Simon:

  - 04a484eafc9eb9f8774b4bdd41a5dc6c9f640daf Test Trac #10359
  - a9ccd37add8315e061c02e5bf26c08f05fad9ac9 Test Trac #10403
  - c0aae6f699cbd222d826d0b8d78d6cb3f682079e Test Trac #10248
  - eb6ca851f553262efe0824b8dcbe64952de4963d Make the "matchable-given" check happen first
  - ca173aa30467a0b1023682d573fcd94244d85c50 Add a case to checkValidTyCon
  - 51cbad15f86fca1d1b0e777199eb1079a1b64d74 Update haddock submodule
  - 6e1174da5b8e0b296f5bfc8b39904300d04eb5b7 Separate transCloVarSet from fixVarSet
  - a8493e03b89f3b3bfcdb6005795de050501f5c29 Fix imports in HscMain (stage2)
  - a154944bf07b2e13175519bafebd5a03926bf105 Two wibbles to fix the build
  - 5910a1bc8142b4e56a19abea104263d7bb5c5d3f Change in capitalisation of error msg
  - 130e93aab220bdf14d08028771f83df210da340b Refactor tuple constraints
  - 8da785d59f5989b9a9df06386d5bd13f65435bc0 Delete commented-out line

These break the build by causing Haddock to fail mysteriously when
trying to examine GHC.Prim it seems.

4 years agoTest Trac #10359
Simon Peyton Jones [Wed, 13 May 2015 16:23:06 +0000 (17:23 +0100)] 
Test Trac #10359

4 years agoTest Trac #10403
Simon Peyton Jones [Wed, 13 May 2015 16:17:22 +0000 (17:17 +0100)] 
Test Trac #10403

4 years agoTest Trac #10248
Simon Peyton Jones [Wed, 13 May 2015 16:11:46 +0000 (17:11 +0100)] 
Test Trac #10248

4 years agoMake the "matchable-given" check happen first
Simon Peyton Jones [Wed, 13 May 2015 11:49:13 +0000 (12:49 +0100)] 
Make the "matchable-given" check happen first

This change makes the matchable-given check apply uniformly to
     - constraint tuples
     - natural numbers
     - Typeable
as well as to vanilla class constraints.

See Note [Instance and Given overlap] in TcInteract

4 years agoAdd a case to checkValidTyCon
Simon Peyton Jones [Wed, 13 May 2015 11:44:12 +0000 (12:44 +0100)] 
Add a case to checkValidTyCon

Apparently when Haddock'ing, we check GHC.Prim.
So checkValidTyCon must not crash when dealing with
PrimTyCons; and it was doing so in dataConStupidTheta.

The fix is easy, but I'm puzzled about why Haddock needs to
typecheck GHC.Prim.

4 years agoUpdate haddock submodule
Simon Peyton Jones [Wed, 13 May 2015 11:06:36 +0000 (12:06 +0100)] 
Update haddock submodule

The location of setRdrNameSpace has changed in GHC.

(Sadly, the build still fails with a tyConStupidTheta failure in
a haddock invocation; I have no idea why.  But at least Haddock
itself builds.)

4 years agoSeparate transCloVarSet from fixVarSet
Simon Peyton Jones [Wed, 13 May 2015 11:00:10 +0000 (12:00 +0100)] 
Separate transCloVarSet from fixVarSet

I wasn't clear about the distinction before, and that led to a bug
when I refactored FunDeps.oclose to use transCloVarSet; it should
use fixVarSet.