ghc.git
20 months agoRevert "Update Win32 version for GHC 8.4."
Tamar Christina [Wed, 25 Oct 2017 08:53:54 +0000 (09:53 +0100)] 
Revert "Update Win32 version for GHC 8.4."

This reverts commit 561bdca16e2fe88d0b96fc10098955eabca81bba.

submodule

20 months agoRevert "ghc-cabal: Inline removed function ..."
Tamar Christina [Wed, 25 Oct 2017 08:53:25 +0000 (09:53 +0100)] 
Revert "ghc-cabal: Inline removed function ..."

This reverts commit f744261ad25942e8a747821fc468f1a21c9c705c.

20 months agoghc-cabal: Inline removed function from Cabal.
Tamar Christina [Wed, 25 Oct 2017 08:30:52 +0000 (09:30 +0100)] 
ghc-cabal: Inline removed function from Cabal.

20 months agoUpdate Win32 version for GHC 8.4.
Tamar Christina [Wed, 25 Oct 2017 07:51:00 +0000 (08:51 +0100)] 
Update Win32 version for GHC 8.4.

Summary: Update to Win32 2.6 which is the expected version release for 8.4

This bumps the required submodule s as well.

Test Plan: ./validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4117

20 months agoRevert "Windows: Bump to GCC 7.2 for GHC 8.4"
Tamar Christina [Wed, 25 Oct 2017 07:45:24 +0000 (08:45 +0100)] 
Revert "Windows: Bump to GCC 7.2 for GHC 8.4"

This reverts commit b62097d10e0ff490f862661a24e3ca1cc1bba841.

20 months agoWindows: Bump to GCC 7.2 for GHC 8.4
Tamar Christina [Wed, 25 Oct 2017 07:13:55 +0000 (08:13 +0100)] 
Windows: Bump to GCC 7.2 for GHC 8.4

Summary:
GHC 8.4 is expected to ship with an updated GCC bindist based on GCC 7.2.

I am however at this time not updating the crt due to an issue introduced
in september. https://sourceforge.net/p/mingw-w64/mailman/message/36085637/

Unless a favorable fix comes out of the discussion I will just ship the old crt
with GHC 8.4.

Test Plan: ./validate

Reviewers: austin, bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4119

20 months agoRemove the 'legroom' part of the timeout-accurate-pure test.
Tom Sydney Kerckhove [Wed, 25 Oct 2017 07:09:35 +0000 (08:09 +0100)] 
Remove the 'legroom' part of the timeout-accurate-pure test.

Summary:
This removes the part of the test that checks whether the timeout happened in
a 'reasonable' amount of time, because it is flaky.
In subsequent work, we can turn this into a benchmark.

Test Plan: This _is_ a test

Reviewers: nh2, bgamari, Phyx, austin, hvr

Reviewed By: Phyx

Subscribers: rwbarton, thomie

GHC Trac Issues: #8684

Differential Revision: https://phabricator.haskell.org/D4120

20 months agoInclude usg_file_hash in ghc --show-iface output
Simon Marlow [Fri, 20 Oct 2017 16:07:27 +0000 (17:07 +0100)] 
Include usg_file_hash in ghc --show-iface output

Summary:
Otherwise we can get an iface hash difference, but no indication of what
caused it in the --show-iface output.

Test Plan: Harbourmaster

Reviewers: austin, bgamari, erikd

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4115

20 months agoUser’s guide: Properly link to RTS flag -V
Joachim Breitner [Tue, 24 Oct 2017 14:36:49 +0000 (10:36 -0400)] 
User’s guide: Properly link to RTS flag -V

20 months agoTemporary fix to Trac #14380
Simon Peyton Jones [Tue, 24 Oct 2017 10:12:43 +0000 (11:12 +0100)] 
Temporary fix to Trac #14380

This fix replaces an utterly bogus error message with a decent one,
rejecting a pattern synonym with a list pattern and rebindable syntax.

Not hard to fix properly, but I'm going to wait for a willing volunteer
and/or more user pressure.

20 months agoComments only
Simon Peyton Jones [Mon, 23 Oct 2017 08:08:16 +0000 (09:08 +0100)] 
Comments only

20 months agosubmodule nofib: Add digits-of-e2.faststdout
Joachim Breitner [Mon, 23 Oct 2017 04:57:33 +0000 (00:57 -0400)] 
submodule nofib: Add digits-of-e2.faststdout

20 months agosubmodule nofib: Add digits-of-e1.faststdout
Joachim Breitner [Mon, 23 Oct 2017 03:45:10 +0000 (23:45 -0400)] 
submodule nofib: Add digits-of-e1.faststdout

20 months agonofib submodule: Fix a problem with fasta-c.c
Joachim Breitner [Mon, 23 Oct 2017 02:44:39 +0000 (22:44 -0400)] 
nofib submodule: Fix a problem with fasta-c.c

20 months agoAdd stack traces on crashes on Windows
Tamar Christina [Sun, 22 Oct 2017 11:14:22 +0000 (12:14 +0100)] 
Add stack traces on crashes on Windows

Summary:
This patch adds the ability to generate stack traces on crashes for Windows.
When running in the interpreter this attempts to use symbol information from
the interpreter and information we know about the loaded object files to
resolve addresses to symbols.

When running compiled it doesn't have this information and then defaults
to using symbol information from PDB files. Which for now means only
files compiled with ICC or MSVC will show traces compiled.

But I have a future patch that may address this shortcoming.

Also since I don't know how to walk a pure haskell stack, I can for now
only show the last entry. I'm hoping to figure out how Apply.cmm works to
be able to walk the stalk and give more entries for pure haskell code.

In GHCi

```
$ echo main | inplace/bin/ghc-stage2.exe --interactive ./testsuite/tests/rts/derefnull.hs
GHCi, version 8.3.20170830: http://www.haskell.org/ghc/  :? for help
Ok, 1 module loaded.
Prelude Main>
Access violation in generated code when reading 0x0

 Attempting to reconstruct a stack trace...

   Frame        Code address
 * 0x77cde10    0xc370229 E:\..\base\dist-install\build\HSbase-4.10.0.0.o+0x190031
                 (base_ForeignziStorable_zdfStorableInt4_info+0x3f)
```

and compiled

```
Access violation in generated code when reading 0x0

 Attempting to reconstruct a stack trace...

   Frame        Code address
 * 0xf0dbd0     0x40bb01 E:\..\rts\derefnull.run\derefnull.exe+0xbb01
```

Test Plan: ./validate

Reviewers: austin, hvr, bgamari, erikd, simonmar

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D3913

20 months agoUpdate record-wildcard docs
Simon Peyton Jones [Fri, 20 Oct 2017 12:49:11 +0000 (13:49 +0100)] 
Update record-wildcard docs

This patch clarifies the story for record wildcards,
following the discussion on Trac #14347.

20 months agoImprove kick-out in the constraint solver
Simon Peyton Jones [Fri, 20 Oct 2017 11:08:04 +0000 (12:08 +0100)] 
Improve kick-out in the constraint solver

This patch was provoked by Trac #14363.  Turned out that we were
kicking out too many constraints in TcSMonad.kickOutRewritable, and
that mean that the work-list never became empty: infinite loop!

That in turn made me look harder at the Main Theorem in
Note [Extending the inert equalities].

Main changes

* Replace TcType.isTyVarExposed by TcType.isTyVarHead.  The
  over-agressive isTyVarExposed is what caused Trac #14363.
  See Note [K3: completeness of solving] in TcSMonad.

* TcType.Make anyRewriteableTyVar role-aware.  In particular,
      a ~R ty
  cannot rewrite
      b ~R f a
  See Note [anyRewriteableTyVar must be role-aware].  That means
  it has to be given a role argument, which forces a little
  refactoring.

  I think this change is fixing a bug that hasn't yet been reported.
  The actual reported bug is handled by the previous bullet.  But
  this change is definitely the Right Thing

The main changes are in TcSMonad.kick_out_rewritable, and in TcType
(isTyVarExposed ---> isTyVarHead).

I did a little unforced refactoring:

 * Use the cc_eq_rel field of a CTyEqCan when it is available, rather
   than recomputing it.

 * Define eqCanRewrite :: EqRel -> EqRel -> EqRel, and use it, instead
   of duplicating its logic

20 months agoComments and white space
Simon Peyton Jones [Wed, 18 Oct 2017 14:21:16 +0000 (15:21 +0100)] 
Comments and white space

20 months agoOutputable: Add pprTraceException
Ben Gamari [Thu, 19 Oct 2017 17:25:51 +0000 (13:25 -0400)] 
Outputable: Add pprTraceException

20 months agoAdd Functor Bag instance
Ben Gamari [Thu, 19 Oct 2017 17:25:02 +0000 (13:25 -0400)] 
Add Functor Bag instance

20 months agoUntag the potential AP_STACK in stg_getApStackValzh
James Clarke [Wed, 18 Oct 2017 20:33:28 +0000 (16:33 -0400)] 
Untag the potential AP_STACK in stg_getApStackValzh

If the AP_STACK has been evaluated and a GC has run, the BLACKHOLE
indirection will have been removed, and the StablePtr for the original
AP_STACK referred to be GHCi will therefore now point directly to the
value, and may be tagged. Add a hist002 test for this, and make sure
hist001 doesn't do an idle GC, so the case when it's still a BLACKHOLE
is definitely also tested.

Reviewers: austin, bgamari, erikd, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4099

20 months agoGive a reference to Foreign.Concurrent.
Edward Z. Yang [Wed, 18 Oct 2017 20:32:17 +0000 (16:32 -0400)] 
Give a reference to Foreign.Concurrent.

Test Plan: none

Reviewers: bgamari, austin, hvr

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4081

20 months agoAdded a test for 'timeout' to be accurate.
Tom Sydney Kerckhove [Wed, 18 Oct 2017 20:27:56 +0000 (16:27 -0400)] 
Added a test for 'timeout' to be accurate.

This is the first in a series of regression tests prompted by
https://ghc.haskell.org/trac/ghc/ticket/8684 and D4011, D4012, D4041

Test Plan: This _is_ a test.

Reviewers: nh2, austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #8684

Differential Revision: https://phabricator.haskell.org/D4074

20 months agoExpose monotonic time from GHC.Event.Clock
Tom Sydney Kerckhove [Wed, 18 Oct 2017 20:24:46 +0000 (16:24 -0400)] 
Expose monotonic time from GHC.Event.Clock

This diff exposes the monotonic time api from GHC.Event.Clock.

This is necessary for future work on regression tests (#D4074) for
the timeout problems (8684, for example) in #D4041, #D4011, #D4012

Test Plan: Still builds ...

Reviewers: nh2, bgamari, austin, hvr

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4079

20 months agoBump arcanist-external-json-linter submodule
Ben Gamari [Thu, 19 Oct 2017 13:12:00 +0000 (09:12 -0400)] 
Bump arcanist-external-json-linter submodule

20 months agoUser's guide: Fix the category of some flags
Joachim Breitner [Thu, 19 Oct 2017 15:45:19 +0000 (11:45 -0400)] 
User's guide: Fix the category of some flags

so now “7.6.12. Language options” only lists `-X` flags, as it should.

20 months agoExport injectiveVarsOf{Binder,Type} from TyCoRep
Ryan Scott [Thu, 19 Oct 2017 14:21:33 +0000 (10:21 -0400)] 
Export injectiveVarsOf{Binder,Type} from TyCoRep

Summary:
I ended up needing to use the functionality of
`injectiveVarsOfBinder`/`injectiveVarsOfType` in this Haddock PR
(https://github.com/haskell/haddock/pull/681), but alas, neither of
these functions were exported. Let's do so.

Test Plan: Does it compile?

Reviewers: austin, goldfire, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4107

20 months agoFix #14369 by making injectivity warnings finer-grained
Ryan Scott [Thu, 19 Oct 2017 14:21:28 +0000 (10:21 -0400)] 
Fix #14369 by making injectivity warnings finer-grained

Summary:
Previously, GHC would always raise the possibility that a
type family might not be injective in certain error messages, even if
that type family actually //was// injective. Fix this by actually
checking for a type family's lack of injectivity before emitting
such an error message.

Test Plan: ./validate

Reviewers: goldfire, austin, bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, thomie

GHC Trac Issues: #14369

Differential Revision: https://phabricator.haskell.org/D4106

20 months agoError when deriving instances in hs-boot files
Ryan Scott [Thu, 19 Oct 2017 14:21:17 +0000 (10:21 -0400)] 
Error when deriving instances in hs-boot files

Summary:
According to the GHC users' guide, one cannot derive
instances for data types in `.hs-boot` files.
However, GHC was not enforcing this in practice, which led to
#14365.

Fix this by actually throwing an error if a derived instance is
detected in an `.hs-boot` file (and recommend how to fix it in the
error message.)

Test Plan: make test TEST=T14365

Reviewers: ezyang, austin, bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, thomie

GHC Trac Issues: #14365

Differential Revision: https://phabricator.haskell.org/D4102

20 months agoDisable -XRebindableSyntax when running internal GHCi expressions
Ryan Scott [Thu, 19 Oct 2017 13:50:17 +0000 (09:50 -0400)] 
Disable -XRebindableSyntax when running internal GHCi expressions

Summary:
It's well known that `-XRebindableSyntax` doesn't play
nicely with some of the internal expressions that GHCi runs. #13385
was one example where this problem arose, which was fixed at the time
by simply avoiding the use of `do`-notation in these internal GHCi
expressions. That seemed to work, but it was a technique that proved
not to scale, as #14342 demonstrated //another// example where
`-XRebindableSyntax` can bite.

Instead of delicately arranging the internal GHCi expressions to
avoid anything that might be covered under `-XRebindableSyntax`,
this patch takes the much more direct approach of disabling
`-XRebindableSyntax` entirely when running any internal GHCi
expression. This shouldn't hurt, since nothing internal to GHCi was
taking advantage of the extension in the first place, and moreover,
we can have greater confidence that some other obscure
`-XRebindableSyntax` corner case won't pop up in the future. As an
added bonus, this lets us once again use `do`-notation in the code
that had to be changed when #13385 was (hackily) fixed before.

Test Plan: make test TEST=T14342

Reviewers: bgamari, austin

Subscribers: rwbarton, thomie

GHC Trac Issues: #14342

Differential Revision: https://phabricator.haskell.org/D4086

20 months agoAccept test output for #14350
Ryan Scott [Thu, 19 Oct 2017 13:49:48 +0000 (09:49 -0400)] 
Accept test output for #14350

21 months agowhitespace only
Gabor Greif [Wed, 18 Oct 2017 09:47:52 +0000 (11:47 +0200)] 
whitespace only

21 months agoTypofix in comment
Gabor Greif [Wed, 18 Oct 2017 06:49:21 +0000 (08:49 +0200)] 
Typofix in comment

21 months agoBetter solving for representational equalities
Simon Peyton Jones [Tue, 17 Oct 2017 15:32:25 +0000 (16:32 +0100)] 
Better solving for representational equalities

This patch adds a bit of extra solving power for representational
equality constraints to fix Trac #14333

The main changes:

* Fix a buglet in TcType.isInsolubleOccursCheck which wrongly
  reported a definite occurs-check error for (a ~R# b a)

* Get rid of TcSMonad.emitInsolubles.  It had an ad-hoc duplicate-removal
  piece that is better handled in interactIrred, now that insolubles
  are Irreds.

  We need a little care to keep inert_count (which does not include
  insolubles) accurate.

* Refactor TcInteract.solveOneFromTheOther, to return a much simpler
  type.  It was just over-complicated before.

* Make TcInteract.interactIrred look for constraints that match
  either way around, in TcInteract.findMatchingIrreds

This wasn't hard and it cleaned up quite a bit of code.

21 months agoDon't deeply expand insolubles
Simon Peyton Jones [Tue, 17 Oct 2017 15:30:33 +0000 (16:30 +0100)] 
Don't deeply expand insolubles

Trac #13450 went bananas if we expand insoluble constraints.
Better just to leave them un-expanded.

I'm not sure in detail about why it goes so badly wrong; but
regardless, the less we mess around with insoluble contraints
the better the error messages will be.

21 months agoImprove user’s guide around deriving
Joachim Breitner [Tue, 17 Oct 2017 21:34:25 +0000 (17:34 -0400)] 
Improve user’s guide around deriving

In particular:
 * add an intro to “10.6. Extensions to the “deriving” mechanism” giving
   an overview,
 * make the various sections on `-XDerivingFoo` subsections of
   “10.6.3. Deriving instances of extra classes (Data, etc.)”
 * Move the reference anchors for the various `DerivingFoo` extensions
   to a more appropriate spot.
 * Add subsection “10.6.6.1. Default deriving strategy” to the
   deriving section (#14357)

21 months agoFix grammaros in comments
Gabor Greif [Tue, 17 Oct 2017 11:44:13 +0000 (13:44 +0200)] 
Fix grammaros in comments

21 months agoSimplify, no functionality change
Gabor Greif [Tue, 17 Oct 2017 10:37:25 +0000 (12:37 +0200)] 
Simplify, no functionality change

21 months agoBump ghc-prim to 0.5.2.0 and update changelog
Herbert Valerio Riedel [Mon, 16 Oct 2017 22:35:45 +0000 (00:35 +0200)] 
Bump ghc-prim to 0.5.2.0 and update changelog

This is prompted by the addition of `compareByteArrays#` in
e3ba26f8b49700b41ff4672f3f7f6a4e453acdcc

NOTE: We may switch to synchronise `ghc-prim` with GHC's version at some point

21 months agousers-guide: Clarify -ddump-asm-regalloc-stages documentation
Ben Gamari [Mon, 16 Oct 2017 21:54:38 +0000 (17:54 -0400)] 
users-guide: Clarify -ddump-asm-regalloc-stages documentation

[skip ci]

21 months agoupdateThunk: indirectee can be tagged
James Clarke [Mon, 16 Oct 2017 21:38:14 +0000 (17:38 -0400)] 
updateThunk: indirectee can be tagged

Reviewers: austin, bgamari, erikd, simonmar, trofi

Reviewed By: trofi

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4100

21 months agoFlags.hsc: Peek a CBool (Word8), not a Bool (Int32)
James Clarke [Mon, 16 Oct 2017 21:37:55 +0000 (17:37 -0400)] 
Flags.hsc: Peek a CBool (Word8), not a Bool (Int32)

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4093

21 months agoghci: Include "Rts.h" before using TABLES_NEXT_TO_CODE
Ben Gamari [Mon, 16 Oct 2017 21:36:14 +0000 (17:36 -0400)] 
ghci: Include "Rts.h" before using TABLES_NEXT_TO_CODE

Reviewers: austin

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4088

21 months agoRtClosureInspect: Fix inspecting Char# on 64-bit big-endian
James Clarke [Mon, 16 Oct 2017 21:33:45 +0000 (17:33 -0400)] 
RtClosureInspect: Fix inspecting Char# on 64-bit big-endian

Char# is represented with a full machine word, whereas Char's Storable
instance uses an Int32, so we can't just treat it like a single-element
Char array. Instead, read it as an Int and use chr to turn it into a
Char. This fixes Trac #11262.

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #11262

Differential Revision: https://phabricator.haskell.org/D4089

21 months agorts/posix: Ensure that memory commit succeeds
Ben Gamari [Mon, 16 Oct 2017 21:30:12 +0000 (17:30 -0400)] 
rts/posix: Ensure that memory commit succeeds

Previously we wouldn't check that mmap would succeed. I suspect this may
have been the cause of #14329.

Test Plan: Validate under low-memory condition

Reviewers: simonmar, austin, erikd

Reviewed By: simonmar

Subscribers: rwbarton, thomie

GHC Trac Issues: #14329

Differential Revision: https://phabricator.haskell.org/D4075

21 months agousers-guide: Fix various warnings
Ben Gamari [Mon, 16 Oct 2017 21:07:45 +0000 (17:07 -0400)] 
users-guide: Fix various warnings

[skip ci]

21 months agousers guide: Eliminate redundant :category: tags in debugging.rst
Ben Gamari [Mon, 16 Oct 2017 20:52:31 +0000 (16:52 -0400)] 
users guide: Eliminate redundant :category: tags in debugging.rst

The categories in this file are defined in flags.py.

21 months agousers-guide: Rework and finish debug flag documentation
Ben Gamari [Mon, 16 Oct 2017 20:49:21 +0000 (16:49 -0400)] 
users-guide: Rework and finish debug flag documentation

This documentation was incomplete and not terribly well organized. Given that
I've spent a lot of time searching through this page, I figured it is perhaps
worth it to clean it up a bit.

21 months agorts: Label all threads created by the RTS
Ben Gamari [Mon, 16 Oct 2017 19:28:02 +0000 (15:28 -0400)] 
rts: Label all threads created by the RTS

Reviewers: austin, erikd, simonmar

Reviewed By: simonmar

Subscribers: pacak, rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4068

21 months agoFreeBSD dtrace probe support
Ben Gamari [Mon, 16 Oct 2017 19:27:48 +0000 (15:27 -0400)] 
FreeBSD dtrace probe support

Reviewers: austin, hvr, erikd, simonmar, bgamari

Reviewed By: bgamari

Subscribers: snowleopard, raichoo, rwbarton, thomie, erikd

Differential Revision: https://phabricator.haskell.org/D3994

21 months agoLevity polymorphic Backpack.
Edward Z. Yang [Mon, 16 Oct 2017 19:27:10 +0000 (15:27 -0400)] 
Levity polymorphic Backpack.

This patch makes it possible to specify non * kinds of
abstract data types in signatures, so you can have
levity polymorphism through Backpack, without the runtime
representation constraint!

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: andrewthad, bgamari, austin, goldfire

Reviewed By: bgamari

Subscribers: goldfire, rwbarton, thomie

GHC Trac Issues: #13955

Differential Revision: https://phabricator.haskell.org/D3825

21 months agoconfigure: Fix CC version check on Apple compilers
Ben Gamari [Tue, 10 Oct 2017 20:09:39 +0000 (16:09 -0400)] 
configure: Fix CC version check on Apple compilers

It seems that some Apple LLVM wrappers emit multiple messages containing
the string "version", which we previously used to find the version
number.  For instance,

    Configured with: --prefix=/Applications/Xcode.app/Contents/...
    Apple LLVM version 9.0.0 (clang-900.0.37)
    Target: x86_64-apple-darwin16.7.0
    Thread model: posix
    InstalledDir: /Applications/Xcode.app/Contents/Developer/...
    Found CUDA installation: /usr/local/cuda, version 8.0

We now take care to only look at the first occurrence of this string.

New `sed` command due to @merijn.

Test Plan: Validate on all the compilers

Reviewers: austin, hvr

Subscribers: rwbarton, thomie, merijn, erikd

Differential Revision: https://phabricator.haskell.org/D4069

21 months agoImplement {set,clear,complement}BitBigNat primitives
Herbert Valerio Riedel [Sat, 14 Oct 2017 07:38:01 +0000 (09:38 +0200)] 
Implement {set,clear,complement}BitBigNat primitives

This implements the missing `{set,clear,complement}BitBigNat` primitives
and hooks them up to `Natural`'s `Bits` instance.

This doesn't yet benefit `Integer`, as we still need "negative" `BigNat`
variants of those primitives.

Addresses #7860 (partly)

Reviewed By: bgamari

Differential Revision: https://phabricator.haskell.org/D3415

21 months agoEnable testing 'Natural' type in TEST=arith011
Herbert Valerio Riedel [Sat, 14 Oct 2017 18:37:47 +0000 (20:37 +0200)] 
Enable testing 'Natural' type in TEST=arith011

This now passes thanks to 5984a698fc2974b719365a9647a7cae1bed51eec (re #13203)

21 months agoOverride default `clearBit` method impl for `Natural`
Herbert Valerio Riedel [Mon, 16 Oct 2017 20:12:03 +0000 (22:12 +0200)] 
Override default `clearBit` method impl for `Natural`

The default implementation of `clearBit` is in terms of
`complement`. However, `complement` is not well-defined
for `Natural` and this consequently renders the default
implementation of `clearBit` dysfunctional.

This implements `clearBit` in terms of `testBit`
and `setBit` which are both well-defined for `Natural`s.

This addresses #13203

21 months agoImplement new `compareByteArrays#` primop
Herbert Valerio Riedel [Mon, 16 Oct 2017 19:01:57 +0000 (21:01 +0200)] 
Implement new `compareByteArrays#` primop

The new primop

    compareByteArrays# :: ByteArray# -> Int# {- offset -}
                       -> ByteArray# -> Int# {- offset -}
                       -> Int# {- length -}
                       -> Int#

allows to compare the subrange of the first `ByteArray#` to
the (same-length) subrange of the second `ByteArray#` and returns a
value less than, equal to, or greater than zero if the range is found,
respectively, to be byte-wise lexicographically less than, to match,
or be greater than the second range.

Under the hood, the new primop is implemented in terms of the standard
ISO C `memcmp(3)` function. It is currently an out-of-line primop but
work is underway to optimise this into an inline primop for a future
follow-up Differential (see D4091).

This primop has applications in packages like `text`, `text-short`,
`bytestring`, `text-containers`, `primitive`, etc.  which currently
have to incur the overhead of an ordinary FFI call to directly or
indirectly invoke `memcmp(3)` as well has having to deal with some
`unsafePerformIO`-variant.

While at it, this also improves the documentation for the existing
`copyByteArray#` primitive which has a non-trivial type-signature
that significantly benefits from a more explicit description of its
arguments.

Reviewed By: bgamari

Differential Revision: https://phabricator.haskell.org/D4090

21 months agoFix panic for `ByteArray#` arguments in CApiFFI foreign imports
Herbert Valerio Riedel [Mon, 16 Oct 2017 17:02:01 +0000 (19:02 +0200)] 
Fix panic for `ByteArray#` arguments in CApiFFI foreign imports

Declarations such as

  foreign import capi  unsafe "string.h strlen"
      c_strlen_capi :: ByteArray# -> IO CSize

  foreign import capi  unsafe "string.h memset"
      c_memset_capi :: MutableByteArray# s -> CInt -> CSize -> IO ()

would cause GHC to panic because the CApiFFI c-wrapper generator didn't
know what C type to use for `(Mutable)ByteArray#` types (unlike the
`ccall` codepath).

This addresses #9274

Reviewed By: bgamari

Differential Revision: https://phabricator.haskell.org/D4092

21 months agoFix typo
Peter Trommler [Sun, 15 Oct 2017 11:29:57 +0000 (13:29 +0200)] 
Fix typo

21 months agoFix typo
Peter Trommler [Sun, 15 Oct 2017 09:34:10 +0000 (11:34 +0200)] 
Fix typo

21 months agoFix calculation in threadStackOverflow
Simon Marlow [Sat, 30 Sep 2017 18:11:07 +0000 (13:11 -0500)] 
Fix calculation in threadStackOverflow

Summary:
The calculation was too conservative, and could result in copying zero
frames into the new stack chunk, which caused a knock-on failure in
the interpreter.

Test Plan: Tested on an in-house repro (not shareable, unfortunately)

Reviewers: niteria, bgamari, austin, erikd

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4052

21 months agoRemove section about ApplicativeDo & existentials (#13875)
Simon Marlow [Thu, 12 Oct 2017 07:39:15 +0000 (08:39 +0100)] 
Remove section about ApplicativeDo & existentials (#13875)

Summary:
This section is irrelevant now that strict pattern matches don't get
the ApplicativeDo treatment.

Test Plan:
```
make html FAST=YES
```

Reviewers: bgamari, austin, erikd

Subscribers: rwbarton, thomie

GHC Trac Issues: #13875

Differential Revision: https://phabricator.haskell.org/D4087

21 months agoDelete obsolete docs on GADT interacton with TypeApplications
Ryan Scott [Fri, 13 Oct 2017 13:10:21 +0000 (09:10 -0400)] 
Delete obsolete docs on GADT interacton with TypeApplications

Even since ef26182e2014b0a2a029ae466a4b121bf235e4e4, this section of
the users' guide is wrong, as there are no longer special rules for
the order of type variables in GADT constructors' type signatures
vis-à-vis visible type application. As a result, this section can
simply be deleted, as there is no longer anything interesting to say
about the topic.

21 months agoRe-apply "Typeable: Allow App to match arrow types"
Simon Peyton Jones [Thu, 5 Oct 2017 16:45:20 +0000 (17:45 +0100)] 
Re-apply "Typeable: Allow App to match arrow types"

This re-applies
 commit cc6be3a2f23c9b2e04f9f491099149e1e1d4d20b
  Author: Ben Gamari <bgamari.foss@gmail.com>
  Date:   Tue Sep 19 18:57:38 2017 -0400

    Typeable: Allow App to match arrow types

which was reverted because of Trac #14270.  Now the latter is
fixed we can re-apply it.

The original ticket was Trac #14236

21 months agoDo not bind coercion variables in SpecConstr rules
Simon Peyton Jones [Thu, 12 Oct 2017 10:00:19 +0000 (11:00 +0100)] 
Do not bind coercion variables in SpecConstr rules

Trac #14270 showed that SpecConstr could cause nasty Lint failures
if it generates a RULE that binds coercion varables.  See

 * Note [SpecConstr and casts], and
 * the test simplCore/should_compile/T14270.

This doesn't feel like the final word to me, because somehow the
specialisation "ought" to work.  So I left in a debug WARN to yell if
the new check acutally fires.

Meanwhile, it stops the erroneous specialisation.

binding coercion

21 months agoAdd missing T14325.stderr
Simon Peyton Jones [Thu, 12 Oct 2017 11:45:43 +0000 (12:45 +0100)] 
Add missing T14325.stderr

21 months agoDo not quantify over deriving clauses
Simon Peyton Jones [Thu, 12 Oct 2017 08:25:25 +0000 (09:25 +0100)] 
Do not quantify over deriving clauses

Trac #14331 showed that in a data type decl like

   data D = D deriving (C (a :: k))

we were quantifying D over the 'k' in the deriving clause.  Yikes.

Easily fixed, by deleting code in RnTypes.extractDataDefnKindVars

See the discussion on the ticket, esp comment:8.

21 months agoAdd a missing zonk in TcDerivInfer.simplifyDeriv
Simon Peyton Jones [Wed, 11 Oct 2017 15:17:41 +0000 (16:17 +0100)] 
Add a missing zonk in TcDerivInfer.simplifyDeriv

I'm astonished that anything worked without this!

Fixes Trac #14339

21 months agoAvoid creating dependent types in FloatOut
Simon Peyton Jones [Wed, 11 Oct 2017 13:58:38 +0000 (14:58 +0100)] 
Avoid creating dependent types in FloatOut

This bug was exposed by Trac #14270.  The problem and its cure
is described in SetLevels, Note [Floating and kind casts].

It's simple and will affect very few programs.  But the very
fact that it was so unexpected is discomforting.

21 months agoPretty-printing of derived multi-parameter classes omits parentheses
Alan Zimmerman [Sun, 1 Oct 2017 17:36:03 +0000 (19:36 +0200)] 
Pretty-printing of derived multi-parameter classes omits parentheses

Summary:
Pretty printing a splice with an HsAppType in the deriving clause, such as

    $([d| data Foo a = Foo a deriving (C a) |])

would omit the parens.

Test Plan: ./validate

Reviewers: RyanGlScott, austin, bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #14289

Differential Revision: https://phabricator.haskell.org/D4056

21 months agoFix #10816 by renaming FixitySigs more consistently
Ryan Scott [Wed, 11 Oct 2017 12:43:37 +0000 (08:43 -0400)] 
Fix #10816 by renaming FixitySigs more consistently

Summary:
#10816 surfaced because we were renaming top-level fixity
declarations with a different code path (`rnSrcFixityDecl`) than
the code path for fixity declarations inside of type classes, which
is not privy to names that exist in the type namespace. Luckily, the
fix is simple: use `rnSrcFixityDecl` in both places.

Test Plan: make test TEST=T10816

Reviewers: austin, bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, thomie

GHC Trac Issues: #10816

Differential Revision: https://phabricator.haskell.org/D4077

21 months agoRemove wc_insol from WantedConstraints
Simon Peyton Jones [Mon, 9 Oct 2017 12:16:59 +0000 (13:16 +0100)] 
Remove wc_insol from WantedConstraints

This patch is a pure refactoring, which I've wanted to do for
some time.  The main payload is

* Remove the wc_insol field from WantedConstraints;
  instead put all the insolubles in wc_simple

* Remove inert_insols from InertCans
  Instead put all the insolubles in inert_irreds

* Add a cc_insol flag to CIrredCan, to record that
  the constraint is definitely insoluble

Reasons

* Quite a bit of code gets slightly simpler
* Fewer concepts to keep separate
* Insolubles don't happen at all in production code that is
  just being recompiled, so previously there was a lot of
  moving-about of empty sets

A couple of error messages acutally improved.

21 months agoDelete two unused functions
Simon Peyton Jones [Mon, 9 Oct 2017 12:18:13 +0000 (13:18 +0100)] 
Delete two unused functions

Delete unused functions
       pprArrowChain
       pprPrefixApp

from TyCoRep

21 months agoChange "cobox" to "co" in debug output
Simon Peyton Jones [Fri, 6 Oct 2017 12:39:54 +0000 (13:39 +0100)] 
Change "cobox" to "co" in debug output

These coercions are /not/ boxed, so "cobox" is positively misleading.
And it's longer than necessary.

21 months agoFix over-eager error suppression in TcErrors
Simon Peyton Jones [Thu, 5 Oct 2017 16:40:28 +0000 (17:40 +0100)] 
Fix over-eager error suppression in TcErrors

See Note [Given insolubles] in TcRnTypes

Fixes Trac #14325.

21 months agoMinor refactoring
Simon Peyton Jones [Thu, 5 Oct 2017 14:02:45 +0000 (15:02 +0100)] 
Minor refactoring

I'm trying to understand Check.hs.  This patch is a very
minor refactoring.  No change in behaviour.

21 months agoTypos in comments only
Simon Peyton Jones [Thu, 5 Oct 2017 14:02:12 +0000 (15:02 +0100)] 
Typos in comments only

21 months agoTidy up some convoluted "child/parent" code
Simon Peyton Jones [Wed, 4 Oct 2017 09:48:10 +0000 (10:48 +0100)] 
Tidy up some convoluted "child/parent" code

In investigating something else (Trac #14307) I encountered the
wonders of TcRnExports.lookupChildrenExport, and the data
type ChildLookupResult.

I managed to remove the NameErr constructor from ChildLookupResult,
and simplify the code significantly at the same time.

This is just refactoring; no change in behaviour.

21 months agoSplit SysTools up some
Tamar Christina [Tue, 10 Oct 2017 18:58:56 +0000 (19:58 +0100)] 
Split SysTools up some

Summary:
SysTools and DriverTools have an annoying mutual dependency.
They also each contain pieces of the linker. In order for
changes to be shared between the library and the exe linking
code this dependency needs to be broken in order to avoid
using hs-boot files.

Reviewers: austin, bgamari, erikd

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4071

21 months agoSimply Data instance context for AmbiguousFieldOcc
Ryan Scott [Sat, 7 Oct 2017 21:59:07 +0000 (17:59 -0400)] 
Simply Data instance context for AmbiguousFieldOcc

The current, verbose instance context can be compacted into
`DataId pass`. Indeed, that's what most of the `Data` instances
in this module already do, so this just makes things consistent.

21 months agoFix #14320 by looking through HsParTy in more places
Ryan Scott [Sat, 7 Oct 2017 20:59:03 +0000 (16:59 -0400)] 
Fix #14320 by looking through HsParTy in more places

Summary:
GHC was needlessly rejecting GADT constructors' type
signatures that were surrounded in parentheses due to the fact that
`splitLHsForAllTy` and `splitLHsQualTy` (which are used to check as
part of checking if GADT constructor return types are correct)
weren't looking through parentheses (i.e., `HsParTy`). This is
easily fixed, though.

Test Plan: make test TEST=T14320

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #14320

Differential Revision: https://phabricator.haskell.org/D4072

21 months agoIncorporate changes from #11721 into Template Haskell
Ryan Scott [Sat, 7 Oct 2017 20:58:56 +0000 (16:58 -0400)] 
Incorporate changes from #11721 into Template Haskell

Summary:
#11721 changed the order of type variables in GADT
constructor type signatures, but these changes weren't reflected in
Template Haskell reification of GADTs. Let's do that.

Along the way, I:

* noticed that the `T13885` test was claiming to test TH reification
  of GADTs, but the reified data type wasn't actually a GADT! Since
  this patch touches that part of the codebase, I decided to fix
  this.
* incorporated some feedback from @simonpj in
  https://phabricator.haskell.org/D3687#113566. (These changes alone
  don't account for any different in behavior.)

Test Plan: make test TEST=T11721_TH

Reviewers: goldfire, austin, bgamari, simonpj

Reviewed By: goldfire, bgamari, simonpj

Subscribers: rwbarton, thomie, simonpj

GHC Trac Issues: #11721

Differential Revision: https://phabricator.haskell.org/D4070

21 months agoTestsuite update following d8d87fa
Joachim Breitner [Fri, 6 Oct 2017 14:29:44 +0000 (10:29 -0400)] 
Testsuite update following d8d87fa

21 months agoAdd regression test for #14326
Ryan Scott [Thu, 5 Oct 2017 19:46:05 +0000 (15:46 -0400)] 
Add regression test for #14326

Commit 6b77914cd37b697354611bcd87897885c1e5b4a6 wound up
fixing #14326. Let's add a regression test so that it stays
that way.

21 months agoRemove m_type from Match (#14313)
Joachim Breitner [Wed, 4 Oct 2017 02:09:49 +0000 (22:09 -0400)] 
Remove m_type from Match (#14313)

this is a remains from supporting Result Type Signaturs in the ancient
past.

Differential Revision: https://phabricator.haskell.org/D4066

21 months agoconfigure: Accept *-msys as a Windows OS in a triple
Ben Gamari [Wed, 4 Oct 2017 12:37:26 +0000 (08:37 -0400)] 
configure: Accept *-msys as a Windows OS in a triple

21 months agorts: Print newline after "Stack trace:" on barf
Ben Gamari [Wed, 4 Oct 2017 00:41:17 +0000 (20:41 -0400)] 
rts: Print newline after "Stack trace:" on barf

[skip ci]

21 months agouser-guide: Mention COMPLETE pragma in release notes
Ben Gamari [Tue, 3 Oct 2017 19:09:41 +0000 (15:09 -0400)] 
user-guide: Mention COMPLETE pragma in release notes

Reviewers: austin

Subscribers: rwbarton, thomie

GHC Trac Issues: #14305

Differential Revision: https://phabricator.haskell.org/D4059

21 months agobase: Remove deprecated Chan combinators
Ben Gamari [Tue, 3 Oct 2017 19:09:12 +0000 (15:09 -0400)] 
base: Remove deprecated Chan combinators

Removes isEmptyChan and unGetChan, which have been deprecated for a very
long time. See #13561.

Test Plan: Validate

Reviewers: austin, hvr

Subscribers: rwbarton, thomie

GHC Trac Issues: #13561

Differential Revision: https://phabricator.haskell.org/D4060

21 months agoDon't pass HscEnv to functions in the Hsc monad
Douglas Wilson [Tue, 3 Oct 2017 19:08:47 +0000 (15:08 -0400)] 
Don't pass HscEnv to functions in the Hsc monad

`Hsc` is a reader monad in `HscEnv`. Several functions in HscMain were
taking parameters of type `HscEnv` or `DynFlags`, and returning values
of type `Hsc a`. This patch removes those parameters in favour of asking
them from the context.

This removes a source of confusion and should make refactoring a bit
easier.

Test Plan: ./validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4061

21 months agoInclude libraries which fill holes as deps when linking.
Edward Z. Yang [Tue, 3 Oct 2017 19:08:24 +0000 (15:08 -0400)] 
Include libraries which fill holes as deps when linking.

Fixes the issue reported at https://github.com/haskell/cabal/issues/4755
and fixes #14304 in the GHC tracker.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: bgamari, austin, goldfire

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #14304

Differential Revision: https://phabricator.haskell.org/D4057

21 months agogenapply: Explicitly specify arguments
Moritz Angermann [Tue, 3 Oct 2017 19:06:29 +0000 (15:06 -0400)] 
genapply: Explicitly specify arguments

We seem to not be feeding either live registers or the arguments when
generating the fast call in genapply.  This results in strange signature
missmatches between the callee (expecting no registers) and the call
site, expecting to pass registers.

Test Plan: validate

Reviewers: bgamari, simonmar, austin

Reviewed By: simonmar

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4029

21 months agobase: Add missing @since annotations in GHC.TypeNats
Ben Gamari [Tue, 3 Oct 2017 19:04:16 +0000 (15:04 -0400)] 
base: Add missing @since annotations in GHC.TypeNats

[skip ci]

21 months agoImplement Div, Mod, and Log for type-level nats.
Iavor Diatchki [Tue, 3 Oct 2017 18:58:47 +0000 (14:58 -0400)] 
Implement Div, Mod, and Log for type-level nats.

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: RyanGlScott, dfeuer, adamgundry, rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D4002

21 months agoTrack the order of user-written tyvars in DataCon
Ryan Scott [Tue, 3 Oct 2017 18:58:27 +0000 (14:58 -0400)] 
Track the order of user-written tyvars in DataCon

After typechecking a data constructor's type signature, its type
variables are partitioned into two distinct groups: the universally
quantified type variables and the existentially quantified type
variables. Then, when prompted for the type of the data constructor,
GHC gives this:

```lang=haskell
MkT :: forall <univs> <exis>. (...)
```

For H98-style datatypes, this is a fine thing to do. But for GADTs,
this can sometimes produce undesired results with respect to
`TypeApplications`. For instance, consider this datatype:

```lang=haskell
data T a where
  MkT :: forall b a. b -> T a
```

Here, the user clearly intended to have `b` be available for visible
type application before `a`. That is, the user would expect
`MkT @Int @Char` to be of type `Int -> T Char`, //not//
`Char -> T Int`. But alas, up until now that was not how GHC
operated—regardless of the order in which the user actually wrote
the tyvars, GHC would give `MkT` the type:

```lang=haskell
MkT :: forall a b. b -> T a
```

Since `a` is universal and `b` is existential. This makes predicting
what order to use for `TypeApplications` quite annoying, as
demonstrated in #11721 and #13848.

This patch cures the problem by tracking more carefully the order in
which a user writes type variables in data constructor type
signatures, either explicitly (with a `forall`) or implicitly
(without a `forall`, in which case the order is inferred). This is
accomplished by adding a new field `dcUserTyVars` to `DataCon`, which
is a subset of `dcUnivTyVars` and `dcExTyVars` that is permuted to
the order in which the user wrote them. For more details, refer to
`Note [DataCon user type variables]` in `DataCon.hs`.

An interesting consequence of this design is that more data
constructors require wrappers. This is because the workers always
expect the first arguments to be the universal tyvars followed by the
existential tyvars, so when the user writes the tyvars in a different
order, a wrapper type is needed to swizzle the tyvars around to match
the order that the worker expects. For more details, refer to
`Note [Data con wrappers and GADT syntax]` in `MkId.hs`.

Test Plan: ./validate

Reviewers: austin, goldfire, bgamari, simonpj

Reviewed By: goldfire, simonpj

Subscribers: ezyang, goldfire, rwbarton, thomie

GHC Trac Issues: #11721, #13848

Differential Revision: https://phabricator.haskell.org/D3687

21 months agoOptimize linker by minimizing calls to tryGCC to avoid fork/exec overhead.
Tamar Christina [Tue, 3 Oct 2017 18:55:28 +0000 (14:55 -0400)] 
Optimize linker by minimizing calls to tryGCC to avoid fork/exec overhead.

On Windows process creations are fairly expensive. As such calling them in
what's essentially a hot loop is also fairly expensive.

Each time we make a call to `tryGCC` the following fork/exec/wait happen

```
gcc -> realgcc -> cc1
```

This is very problematic, because according to the profiler about 20% of the
time is spent on just process creation and spin time.

The goal of the patch is to mitigate this by asking GCC once for it's search
directories, caching these (because it's very hard to change these at all
after the process started since GCC's base dirs don't change unless with
extra supplied `-B` flags.).

We also do the same for the `findSysDll` function, since this computes
the search path every time by registery accesses etc.

These changes and D3909 drop GHC on Windows startup time from 2-3s to 0.5s.

The remaining issue is a 1.5s wait lock on `CONIN$` which can be addressed
with the new I/O manager code. But this makes GHCi as responsive on Windows as
GHC 7.8 was.

Test Plan: ./validate

Reviewers: austin, hvr, bgamari, erikd

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D3910

21 months agoAdd ability to produce crash dumps on Windows
Tamar Christina [Tue, 3 Oct 2017 17:37:52 +0000 (13:37 -0400)] 
Add ability to produce crash dumps on Windows

It's often hard to debug things like segfaults on Windows,
mostly because gdb isn't always of use and users don't know
how to effectively use it.

This patch provides a way to create a crash drump by passing

`+RTS --generate-crash-dumps` as an option. If any unhandled
exception is triggered a dump is made that contains enough
information to be able to diagnose things successfully.

Currently the created dumps are a bit big because I include
all registers, code and threads information.

This looks like

```
$ testsuite/tests/rts/derefnull.run/derefnull.exe +RTS
--generate-crash-dumps

Access violation in generated code when reading 0000000000000000
Crash dump created. Dump written to:
        E:\msys64\tmp\ghc-20170901-220250-11216-16628.dmp
```

Test Plan: ./validate

Reviewers: austin, hvr, bgamari, erikd, simonmar

Reviewed By: bgamari, simonmar

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D3912

21 months agoSync base/changelog.md
Herbert Valerio Riedel [Tue, 3 Oct 2017 18:46:23 +0000 (20:46 +0200)] 
Sync base/changelog.md

This updates the base-4.10.0.0 entry heading which has diverged from

 http://hackage.haskell.org/package/base-4.10.0.0/src/changelog.md

and while at it also sets the GHC version for the base-4.11 entry to
avoid confusion about what GHC 8.2.2's base is going to include.

[skip ci]

21 months agoRevert installing texinfo in CI systems
Joachim Breitner [Tue, 3 Oct 2017 14:42:08 +0000 (10:42 -0400)] 
Revert installing texinfo in CI systems

This reverts commit 00ff02352f07bff7d422e4e48e4e5df9a0b63d83.
This reverts commit 11a59de25d49f999eed0ea55df29d916a66ecd91.

21 months agoAdd regression test for #9725
Ryan Scott [Tue, 3 Oct 2017 14:10:39 +0000 (10:10 -0400)] 
Add regression test for #9725

Kind equalities saves the day!

21 months agoSuppress error cascade in record fields
Simon Peyton Jones [Tue, 3 Oct 2017 13:42:56 +0000 (14:42 +0100)] 
Suppress error cascade in record fields

When a record contruction or pattern uses a data constructor
that isn't in scope, we may produce spurious ambiguous-field
errors (Trac #14307).  E.g.

   f (A { fld = x }) = e

where 'A' is not in scope.  We want to draw attention to the
out-of-scope data constructor first; once that is fixed we
can think about the fields.

This patch suppresses the field errors if the data con is out
of scope.