ghc.git
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: https://phabricator.haskell.org/D896

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: https://phabricator.haskell.org/D893

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
start.

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

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 <ezyang@cs.stanford.edu>
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 <ezyang@cs.stanford.edu>
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: https://phabricator.haskell.org/D890

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.

4 years agoFix imports in HscMain (stage2)
Simon Peyton Jones [Wed, 13 May 2015 09:18:23 +0000 (10:18 +0100)] 
Fix imports in HscMain (stage2)

4 years agoTwo wibbles to fix the build
Simon Peyton Jones [Wed, 13 May 2015 08:51:49 +0000 (09:51 +0100)] 
Two wibbles to fix the build

...following the constraint-tuple patch.

* There was interaction with the recent Safe Haskell change
* Haddock comoplained about constraint tuples defined but not used

4 years agoChange in capitalisation of error msg
Simon Peyton Jones [Tue, 12 May 2015 20:51:45 +0000 (21:51 +0100)] 
Change in capitalisation of error msg

  -outofmem.exe: Out of memory
  +outofmem.exe: out of memory

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
superclasses:
    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

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 agoRevert D727
Austin Seipp [Wed, 13 May 2015 03:07:06 +0000 (22:07 -0500)] 
Revert D727

This caused print007 to fail, so I guess I botched this more than I
thought. This is a combination of reverting:

  "Fix build breakage from 9736c042", commit f35d621.
  "compiler: make sure we reject -O + HscInterpreted", commit 9736c04.

4 years agoFix fragile T9579 tests
Javran Cheng [Tue, 12 May 2015 21:54:57 +0000 (07:54 +1000)] 
Fix fragile T9579 tests

Fix fragile tests according to comment 13 of #9579 (by @bherzog)

Done by capturing stderr and replace `xx bytes` with `NUM bytes`
(literal).

Some numbers like `(1 MB)` would still remain, but I think
it's safe to assume the actual difference in bytes (on different
architectures) is too small to have an effect on the rounded megabyte
value.

Test Plan: validate

Reviewers: erikd, austin

Reviewed By: erikd, austin

Subscribers: erikd, bgamari, thomie, bherzog

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

GHC Trac Issues: #9579

4 years agoUpdate Safe Haskell documentation.
David Terei [Tue, 12 May 2015 22:30:36 +0000 (15:30 -0700)] 
Update Safe Haskell documentation.

Biggest change is to document new overlapping instances behavior. We
also add back in the explanation of GND being restricted, and improve
the docs across the board.

4 years agoUpdate some tests for recent Safe Haskell change.
David Terei [Tue, 12 May 2015 21:15:20 +0000 (14:15 -0700)] 
Update some tests for recent Safe Haskell change.

4 years agoBackpack docs: Consistently italicize metavariables.
Edward Z. Yang [Tue, 12 May 2015 17:24:27 +0000 (10:24 -0700)] 
Backpack docs: Consistently italicize metavariables.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoTurn off warnings when compiling boolFormula
Alan Zimmerman [Tue, 12 May 2015 15:04:50 +0000 (17:04 +0200)] 
Turn off warnings when compiling boolFormula

Summary:
There is a problem where harbourmaster builds complain about a bad
boolFormula.stderr

    ghc-api/annotations boolFormula [bad stderr] (normal)

The problem does not occur for a local build on my box

This patch turns off warnings for this test, to get rid of the stderr
issue.

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, thomie, hvr

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

4 years agoFix weird behavior of -ignore-dot-ghci and -ghci-scipt
Zejun Wu [Tue, 12 May 2015 13:56:12 +0000 (08:56 -0500)] 
Fix weird behavior of -ignore-dot-ghci and -ghci-scipt

 * Make `-ghci-script` be executed in the order they are specified;
 * Make `-ignore-dot-ghci` only ignores the default .ghci files but
   still execute the scripts passed by `-ghci-script`.

Reviewed By: simonmar, austin

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

GHC Trac Issues: #10408

4 years agoWe need an empty boolFormula.stderr
Alan Zimmerman [Tue, 12 May 2015 08:28:56 +0000 (10:28 +0200)] 
We need an empty boolFormula.stderr

Otherwise the test sometimes fails.

4 years agoUse fmap instead of <$> (Fixes #10407)
Erik de Castro Lopo [Tue, 12 May 2015 04:52:16 +0000 (14:52 +1000)] 
Use fmap instead of <$> (Fixes #10407)

The <$> operator is only available in the standard Prelude in
ghc 7.10 and later.

Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
Test Plan: build with ghc-7.6

Reviewers: dterei, ezyang, austin

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10407

4 years agoMake template-haskell build with GHC 7.6, fixes bootstrap build.
Edward Z. Yang [Mon, 11 May 2015 22:48:35 +0000 (15:48 -0700)] 
Make template-haskell build with GHC 7.6, fixes bootstrap build.

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

Reviewers: austin, goldfire

Subscribers: bgamari, thomie

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

4 years agoNew handling of overlapping inst in Safe Haskell
David Terei [Mon, 11 May 2015 23:05:37 +0000 (16:05 -0700)] 
New handling of overlapping inst in Safe Haskell

We do much better now due to the newish per-instance flags. Rather than
mark any module that uses `-XOverlappingInstances`,
`-XIncoherentInstances` or the new `OVERLAP*` pragmas as unsafe, we
regard them all as safe and defer the check until an overlap occurs.

An type-class method call that involves overlapping instances is
considered _unsafe_ when:

1) The most specific instance, Ix, is from a module marked `-XSafe`
2) Ix is an orphan instance or a MPTC
3) At least one instance that Ix overlaps, Iy, is:
   a) from a different module than Ix
   AND
   b) Iy is not marked `OVERLAPPABLE`

This check is only enforced in modules compiled with `-XSafe` or
`-XTrustworthy`.

This fixes Safe Haskell to work with the latest overlapping instance
pragmas, and also brings consistent behavior. Previously, Safe Inferred
modules behaved differently than `-XSafe` modules.

4 years agoFix safe haskell bug: instances in safe-inferred
David Terei [Sat, 2 Aug 2014 20:37:26 +0000 (13:37 -0700)] 
Fix safe haskell bug: instances in safe-inferred

Instances in Safe Inferred modules weren't marked being marked as coming
from a Safe module.

4 years agoBackpack docs: proper discourse on ModIface and ModDetails.
Edward Z. Yang [Tue, 12 May 2015 01:02:09 +0000 (18:02 -0700)] 
Backpack docs: proper discourse on ModIface and ModDetails.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoIgnore out and toc files.
Edward Z. Yang [Mon, 11 May 2015 23:05:16 +0000 (16:05 -0700)] 
Ignore out and toc files.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoBackpack docs: more carefully describe unification versus unioning.
Edward Z. Yang [Fri, 8 May 2015 22:09:20 +0000 (15:09 -0700)] 
Backpack docs: more carefully describe unification versus unioning.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoSupport stage 1 Template Haskell (non-quasi) quotes, fixes #10382.
Edward Z. Yang [Mon, 4 May 2015 23:10:05 +0000 (16:10 -0700)] 
Support stage 1 Template Haskell (non-quasi) quotes, fixes #10382.

Summary:
This commit adds stage 1 support for Template Haskell
quoting, e.g. [| ... expr ... |], which is useful
for authors of quasiquoter libraries that do not actually
need splices.  The TemplateHaskell extension now does not
unconditionally fail; it only fails if the renamer encounters
a splice that it can't run.

In order to make sure the referenced data structures
are consistent, template-haskell is now a boot library.
There are some minor BC changes to template-haskell to make it boot
on GHC 7.8.

Note for reviewer: big diff changes are simply code
being moved out of an ifdef; there was no other substantive
change to that code.

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

Reviewers: simonpj, austin, goldfire

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10382

4 years agoApiAnnotations : PatBind gives wrong SrcSpan for the pattern.
Alan Zimmerman [Mon, 11 May 2015 15:57:05 +0000 (17:57 +0200)] 
ApiAnnotations : PatBind gives wrong SrcSpan for the pattern.

Summary:
The production for decl_no_th starts

    decl_no_th :: { Located (OrdList (LHsDecl RdrName)) }
            : sigdecl               { $1 }

            | '!' aexp rhs  {% do { let { e = sLL $1 $> (SectionR (sL1 $1 (HsVar bang_RDR)) $2) };
                                    pat <- checkPattern empty e;
    ...

The e value should be just the pattern, excluding the rhs, but the span
created includes the rhs.

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, thomie, mpickering

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

GHC Trac Issues: #10358

4 years agoApiAnnotations : pquals production adds AnnVbar in the wrong place
Alan Zimmerman [Mon, 11 May 2015 13:28:55 +0000 (15:28 +0200)] 
ApiAnnotations : pquals production adds AnnVbar in the wrong place

Summary:
The Parser.y production for pquals is

    pquals :: { Located [[LStmt RdrName (LHsExpr RdrName)]] }
        : squals '|' pquals
                         {% addAnnotation (gl $ last $ unLoc $1) AnnVbar (gl $2) >>
                            return (sLL $1 $> (reverse (unLoc $1) : unLoc $3)) }
        | squals         { L (getLoc $1) [reverse (unLoc $1)] }

The squals are returned in reverse order, so the AnnVbar should be
attached to the head of the list, not the last.

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: thomie, mpickering

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

GHC Trac Issues: #10357

4 years agoFix build breakage from 9736c042
Austin Seipp [Mon, 11 May 2015 12:45:03 +0000 (07:45 -0500)] 
Fix build breakage from 9736c042

This was a snaffu caused by my in-tree patch actually differing from the
Phab one slightly. Whoops.

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoApiAnnotations : BooleanFormula construction discards original
Alan Zimmerman [Mon, 11 May 2015 12:19:14 +0000 (14:19 +0200)] 
ApiAnnotations : BooleanFormula construction discards original

Summary:
The MINIMAL pragma is captured in the parser using a BooleanFormula.

The constructors (mkBool,mkAnd,mkOr) are smart and try to minimise the
boolean formula as it is constructed.

This discards the original information, making round tripping
impossible.

Note: there is another version which provides a more API Annotations
friendly version of the MINIMAL pragma, but this requires changes to
haddock, which will cause problems for 7.10.2.

See https://github.com/alanz/ghc/tree/wip/10287

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, Fuuzetsu, thomie, mpickering

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

GHC Trac Issues: #10287

4 years agocompiler: make sure we reject -O + HscInterpreted
Austin Seipp [Mon, 11 May 2015 12:10:22 +0000 (07:10 -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
elsewhere.

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
too.

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

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

Signed-off-by: Austin Seipp <austin@well-typed.com>
Reviewed By: edsko

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

GHC Trac Issues: #10052

4 years agoMore accurate allocation stats for :set +s
Simon Marlow [Fri, 8 May 2015 14:28:40 +0000 (15:28 +0100)] 
More accurate allocation stats for :set +s

The point of this commit is to make the memory allocation statistic
from :set +s in GHCi a lot more accurate.  Currently it uses the total
allocation figure calculated by the RTS, which is only updated during
GC, so can be wrong by an arbitrary amount.  The fix is to the the
per-thread allocation counter that was introduced for allocation
limits.

This required changes to the GHC API, because we now have to return
the allocation value from each evaluation.  Rather than just change
the API, I introduced a new API and deprecated the old one.  The new
one is simpler and more extensible, so hopefully we won't need to make
this transition in the future.  See GHC.hs for details.

4 years agohaddock: update submodule to fix #10206
Austin Seipp [Mon, 11 May 2015 11:31:45 +0000 (06:31 -0500)] 
haddock: update submodule to fix #10206

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoIdInfo comment update
Joachim Breitner [Mon, 11 May 2015 09:04:43 +0000 (11:04 +0200)] 
IdInfo comment update

occInfo and callArityInfo is like demandInfo and oneShotInfo: Data about
how the Id is used. [skip ci]

4 years agoApiAnnotations : mkGadtDecl discards annotations for HsFunTy
Alan Zimmerman [Mon, 11 May 2015 08:57:25 +0000 (10:57 +0200)] 
ApiAnnotations : mkGadtDecl discards annotations for HsFunTy

Summary:
When mkGadtDecl is presented wih a HsFunTy it discards the SrcSpan, thus
disconnecting any annotations on the HsFunTy.

```
mkGadtDecl names (L ls (HsForAllTy imp Nothing qvars cxt tau))
  = return $ mk_gadt_con names
  where
    (details, res_ty)           -- See Note [Sorting out the result type]
      = case tau of
          L _ (HsFunTy (L l (HsRecTy flds)) res_ty)
                                            -> (RecCon (L l flds), res_ty)
          _other                                    -> (PrefixCon [], tau)
...
```

This can be triggered by the following

```
{-# LANGUAGE GADTs #-}
module GADTRecords2 (H1(..)) where

-- | h1
data H1 a b where
  C3 :: (Num a) => { field :: a -- ^ hello docs
                   } -> H1 Int Int
```

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, thomie, mpickering

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

GHC Trac Issues: #10309

4 years agoApi Annotations: RdrHsSyn.mkAtDefault causes annotations to be disconnected.
Alan Zimmerman [Mon, 11 May 2015 07:34:27 +0000 (09:34 +0200)] 
Api Annotations: RdrHsSyn.mkAtDefault causes annotations to be disconnected.

Summary:
The code for mkAtDefault is as follows.

    mkATDefault (L loc (TyFamInstDecl { tfid_eqn = L _ e }))
          | TyFamEqn { tfe_tycon = tc, tfe_pats = pats, tfe_rhs = rhs } <- e
          = do { tvs <- checkTyVars (ptext (sLit "default")) equalsDots tc (hswb_cts pats)
               ; return (L loc (TyFamEqn { tfe_tycon = tc
                                         , tfe_pats = tvs
                                         , tfe_rhs = rhs })) }

An associated type in a class of the form

    type FoldableConstraint t x = ()

has an AnnEqual attached to the location in tfid_eqn. Since the location
is discarded, this annotation is then disconnected from the AST.

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, thomie, mpickering

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

GHC Trac Issues: #10307

4 years agoRevert stage 1 template-haskell. This is a combination of 5 commits.
Edward Z. Yang [Sat, 9 May 2015 16:43:18 +0000 (09:43 -0700)] 
Revert stage 1 template-haskell. This is a combination of 5 commits.

Revert "Quick fix: drop base bound on template-haskell."

This reverts commit 3c70ae032e4361b203dfcf22b0a424e8838a5037.

Revert "Always do polymorphic typed quote check, c.f. #10384"

This reverts commit 9a43b2c1f78b3cf684646af64b9b67dc8079f58f.

Revert "RnSplice's staging test should be applied for quotes in stage1."

This reverts commit eb0ed4030374af542c0a459480d32c8d4525e48d.

Revert "Split off quotes/ from th/ for tests that can be done on stage1 compiler."

This reverts commit 21c72e7d38c96ac80d31addf67ae4b3c7a6c3bbb.

Revert "Support stage 1 Template Haskell (non-quasi) quotes, fixes #10382."

This reverts commit 28257cae77023f2ccc4cc1c0cd1fbbd329947a00.

4 years agoQuick fix: drop base bound on template-haskell.
Edward Z. Yang [Sat, 9 May 2015 16:35:38 +0000 (09:35 -0700)] 
Quick fix: drop base bound on template-haskell.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoAlways do polymorphic typed quote check, c.f. #10384
Edward Z. Yang [Tue, 5 May 2015 17:53:00 +0000 (10:53 -0700)] 
Always do polymorphic typed quote check, c.f. #10384

Summary:
Since quotes are enabled in stage1, we need to do the
staging check.  This also "fixes" #10384 by adding
a test for the polymorphic local variable test.

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

Reviewers: simonpj, austin

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10384

4 years agoRnSplice's staging test should be applied for quotes in stage1.
Edward Z. Yang [Tue, 5 May 2015 00:28:11 +0000 (17:28 -0700)] 
RnSplice's staging test should be applied for quotes in stage1.

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

Reviewers: simonpj, austin

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10382

4 years agoSplit off quotes/ from th/ for tests that can be done on stage1 compiler.
Edward Z. Yang [Tue, 5 May 2015 00:06:24 +0000 (17:06 -0700)] 
Split off quotes/ from th/ for tests that can be done on stage1 compiler.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: run these tests with stage1

Reviewers: simonpj, austin

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10382

4 years agoSupport stage 1 Template Haskell (non-quasi) quotes, fixes #10382.
Edward Z. Yang [Mon, 4 May 2015 23:10:05 +0000 (16:10 -0700)] 
Support stage 1 Template Haskell (non-quasi) quotes, fixes #10382.

Summary:
This commit adds stage 1 support for Template Haskell
quoting, e.g. [| ... expr ... |], which is useful
for authors of quasiquoter libraries that do not actually
need splices.  The TemplateHaskell extension now does not
unconditionally fail; it only fails if the renamer encounters
a splice that it can't run.

In order to make sure the referenced data structures
are consistent, template-haskell is now a boot library.

In the following patches, there are:

    - A few extra safety checks which should be enabled
      in stage1
    - Separation of the th/ testsuite into quotes/ which
      can be run on stage1

Note for reviewer: big diff changes are simply code
being moved out of an ifdef; there was no other substantive
change to that code.

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

Reviewers: simonpj, austin, goldfire

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10382

4 years agoBackpack docs: AvailInfo plan, and why selectors are hard.
Edward Z. Yang [Fri, 8 May 2015 20:56:21 +0000 (13:56 -0700)] 
Backpack docs: AvailInfo plan, and why selectors are hard.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoApiAnnotations: misplaced AnnComma for squals production
Alan Zimmerman [Fri, 8 May 2015 09:18:28 +0000 (11:18 +0200)] 
ApiAnnotations: misplaced AnnComma for squals production

Summary:
The parser production for squals has

    : squals ',' transformqual
             {% addAnnotation (gl $ last $ unLoc $1) AnnComma (gl $2) >>
                ams (sLL $1 $> ()) (fst $ unLoc $3) >>
                return (sLL $1 $> [sLL $1 $> ((snd $ unLoc $3) (reverse (unLoc $1)))]) }

This attaches the comma to the wrong part of the squals, as it is
generated in reverse order.

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, thomie, mpickering

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

GHC Trac Issues: #10312

4 years agoApiAnnotations : AnnComma missing in TupleSection
Alan Zimmerman [Fri, 8 May 2015 07:38:39 +0000 (09:38 +0200)] 
ApiAnnotations : AnnComma missing in TupleSection

Summary:
For the following code

  {-# LANGUAGE TupleSections #-}

  foo = do
    liftIO $ atomicModifyIORef ciTokens ((,()) . f)

the annotation is missing for the comma.

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10280

4 years agoBackpack docs: meditate on AvailTC with four examples.
Edward Z. Yang [Fri, 8 May 2015 00:30:08 +0000 (17:30 -0700)] 
Backpack docs: meditate on AvailTC with four examples.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoApiAnnotations : RdrHsSyn.isFunLhs discards parentheses
Alan Zimmerman [Thu, 7 May 2015 21:45:44 +0000 (23:45 +0200)] 
ApiAnnotations : RdrHsSyn.isFunLhs discards parentheses

Summary:
The RdrHsSyn.isFunLhs function has the following

  isFunLhs e = go e []
   where
     go (L loc (HsVar f)) es
          | not (isRdrDataCon f)   = return (Just (L loc f, False, es))
     go (L _ (HsApp f e)) es       = go f (e:es)
     go (L _ (HsPar e))   es@(_:_) = go e es

The treatment of HsPar means that any parentheses around an infix function will be discarded.

e.g.

  (f =*= g) sa i = f (toF sa i) =^= g (toG sa i)

will lose the ( before f and the closing one after g

Test Plan: ./validate

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10269

4 years agoRegression test for Trac #10390
Simon Peyton Jones [Thu, 7 May 2015 15:46:02 +0000 (16:46 +0100)] 
Regression test for Trac #10390

4 years agoA bit of refactoring RnSplice
Simon Peyton Jones [Tue, 5 May 2015 11:17:21 +0000 (12:17 +0100)] 
A bit of refactoring RnSplice

...to make clearer what the cross-stage lifting code
applies to (c.f. Trac #10384)

4 years agoComments only
Simon Peyton Jones [Fri, 1 May 2015 14:51:10 +0000 (15:51 +0100)] 
Comments only

4 years agoRevert "API Annotations : add Locations in hsSyn were layout occurs"
Austin Seipp [Wed, 6 May 2015 15:20:26 +0000 (10:20 -0500)] 
Revert "API Annotations : add Locations in hsSyn were layout occurs"

This reverts commit fb54b2c11cc7f2cfbafa35b6a1819d7443aa5494.

As Alan pointed out, this will make cherry picking a lot harder until
7.10.2, so lets back it out until after the release.

4 years agoRevert "ApiAnnotations : Nested forall loses forall annotation"
Austin Seipp [Wed, 6 May 2015 13:19:13 +0000 (08:19 -0500)] 
Revert "ApiAnnotations : Nested forall loses forall annotation"

This reverts commit 81030ede73c4e3783219b2a8d7463524e847cfce.

Alan is abandoning this approach in favor of D836.

4 years agoApiAnnotations : Nested forall loses forall annotation
Alan Zimmerman [Wed, 6 May 2015 13:08:40 +0000 (08:08 -0500)] 
ApiAnnotations : Nested forall loses forall annotation

When parsing

    {-# LANGUAGE ScopedTypeVariables #-}

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

The parser attaches an AnnForall to the second forall, which appears as
a nested HsForAllTy.

Somewhere this nesting is flattened, and the tyvarbndrs are collapsed
into a single HsForAllTy. In this process the second AnnForAll loses its
anchor in the AST.

Reviewed By: austin

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

GHC Trac Issues: #10278

4 years agoApiAnnotations : quoted type variables missing leading quote
Alan Zimmerman [Wed, 6 May 2015 13:07:39 +0000 (08:07 -0500)] 
ApiAnnotations : quoted type variables missing leading quote

The HsOpTy can be constructed for a promoted type operator, in which case it has the following form

        | btype SIMPLEQUOTE qconop type     { sLL $1 $> $ mkHsOpTy $1 $3 $4 }
        | btype SIMPLEQUOTE varop  type     { sLL $1 $> $ mkHsOpTy $1 $3 $4 }

The SIMPLEQUOTE does not get an annotation, so cannot be reproduced via the API Annotations.

Also, in

splice_exp :: { LHsExpr RdrName }
        : TH_ID_SPLICE          { sL1 $1 $ mkHsSpliceE
                                        (sL1 $1 $ HsVar (mkUnqual varName
                                                        (getTH_ID_SPLICE $1))) }
        | '$(' exp ')'          {% ams (sLL $1 $> $ mkHsSpliceE $2) [mo $1,mc $3] }
        | TH_ID_TY_SPLICE       { sL1 $1 $ mkHsSpliceTE
                                        (sL1 $1 $ HsVar (mkUnqual varName
                                                     (getTH_ID_TY_SPLICE $1))) }
        | '$$(' exp ')'         {% ams (sLL $1 $> $ mkHsSpliceTE $2) [mo $1,mc $3] }

the TH_ID_SPLICE and TH_ID_TY_SPLICE positions are lost.

Reviewed By: austin

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

GHC Trac Issues: #10268

4 years agoCorrect parsing of lifted empty list constructor
Matthew Pickering [Wed, 6 May 2015 13:07:31 +0000 (08:07 -0500)] 
Correct parsing of lifted empty list constructor

See #10299

Previously `'[]` was parsed to a `HsTyVar` rather than a
`HsExplicitListTy`. This patch fixes the
shift-reduce conflict which caused this problem.

Reviewed By: alanz, austin

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

4 years agoAPI Annotations : add Locations in hsSyn were layout occurs
Alan Zimmerman [Wed, 6 May 2015 13:05:11 +0000 (08:05 -0500)] 
API Annotations : add Locations in hsSyn were layout occurs

At the moment ghc-exactprint, which uses the GHC API Annotations to
provide a framework for roundtripping Haskell source code with optional
AST edits, has to implement a horrible workaround to manage the points
where layout needs to be captured.

These are

    MatchGroup
    HsDo
    HsCmdDo
    HsLet
    LetStmt
    HsCmdLet
    GRHSs

To provide a more natural representation, the contents subject to layout
rules need to be wrapped in a SrcSpan.

This commit does this.

Trac ticket #10250

Reviewed By: austin

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

GHC Trac Issues: #10250

4 years agobase: Fix confusing docs typo
Alexander Berntsen [Wed, 6 May 2015 12:52:29 +0000 (07:52 -0500)] 
base: Fix confusing docs typo

Signed-off-by: Alexander Berntsen <alexander@plaimi.net>
Reviewed By: austin

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

4 years agorts: add "-no-rtsopts-suggestions" option
Javran Cheng [Wed, 6 May 2015 12:47:20 +0000 (07:47 -0500)] 
rts: add "-no-rtsopts-suggestions" option

Depends on D767

Setting this flag prevents RTS from giving RTS suggestions like "Use
`+RTS -Ksize -RTS' to increase it."

According to the comment @rwbarton made in #9579, sometimes "+RTS"
suggestions don't make sense (e.g. when the program is precompiled and
installed through package managers), we can encourage people to
distribute binaries with either "-no-rtsopts-suggestions" or "-rtsopts".

Reviewed By: erikd, austin

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

GHC Trac Issues: #9579

4 years agoRetain ic_monad and ic_int_print from external packages after load
watashi [Wed, 6 May 2015 12:47:04 +0000 (07:47 -0500)] 
Retain ic_monad and ic_int_print from external packages after load

Retain ic_monad and ic_int_print in InteractiveContext after load
when they are defined in external packages. This is supposed to be
the desired behavior that the interactive-print and setGHCiMonad
will survive after :cd, :add, :load, :reload and :set in GHCi.

Test Plan:
Install a interactive-print function and GHCi monad from extenal
pacakge. Try :cd, :load and other commands, make sure that the
interactive-print function and GHCi monad always keep the same.

Reviewed By: simonmar

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

4 years agoFix typo: identifer -> identifier
Vikraman Choudhury [Wed, 6 May 2015 12:46:28 +0000 (07:46 -0500)] 
Fix typo: identifer -> identifier

I noticed this typo while using template haskell.

Signed-off-by: Vikraman Choudhury <git@vikraman.org>
Test Plan:
```
λ> :set -XTemplateHaskell
λ> :m +Language.Haskell.TH
λ> data Foo = Foo
λ> $(conE ''Foo)
<interactive>:9:9:
    Type constructor ‘Foo’ used where a value identifier was expected
    In the expression: Foo
    In an equation for ‘f’: f = Foo

```

Reviewed By: bgamari

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

4 years agoNormalise type families in the type of an expression
Christiaan Baaij [Wed, 6 May 2015 12:46:00 +0000 (07:46 -0500)] 
Normalise type families in the type of an expression

Before, the type of an expression, and the type of a variable
binding that expression used to be different in GHCi. The
reason being that types of bound variables were already normalised.
Now, both are normalised.

This implements the suggestions as given in Trac #10321
Also adds an expected output for test T10321

Reviewed By: goldfire, simonpj

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

GHC Trac Issues: #10321

4 years agoDoc: checkCrossStageLifting, RnSplice/TcExpr is untyped/typed brackets (#10384)
Edward Z. Yang [Tue, 5 May 2015 17:34:33 +0000 (10:34 -0700)] 
Doc: checkCrossStageLifting, RnSplice/TcExpr is untyped/typed brackets (#10384)

Clarify that repeated checkCrossStageLifting in RnSplice/TcExpr
check untyped/typed brackets, respectively.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoarm: Force non-executable stack (part 2)
Erik de Castro Lopo [Mon, 4 May 2015 23:39:31 +0000 (23:39 +0000)] 
arm: Force non-executable stack (part 2)

This was supposed to be part of commit 63a10bbc42 but I pushed
from the wrong machine. This fixes cross compiling to arm.

Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
4 years agoDocumentation for Language.Haskell.TH.Quote.
Edward Z. Yang [Fri, 17 Apr 2015 11:24:33 +0000 (12:24 +0100)] 
Documentation for Language.Haskell.TH.Quote.

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

Reviewers: simonpj, austin

Subscribers: thomie

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

4 years agoGive a hint when a TH splice has a bad package key, partially fixes #10279
Edward Z. Yang [Mon, 20 Apr 2015 21:02:36 +0000 (14:02 -0700)] 
Give a hint when a TH splice has a bad package key, partially fixes #10279

Previously, if we got a package key in our splice, we'd give
a very unhelpful error message saying we couldn't find
a package 'base-4.7.0.1', despite there being a package with
that source package ID.  Really, we couldn't find a package with
that *key*, so clarify, and also tell the user what the real
package key is.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoFix safeHaskell test for llvm backend
Erik de Castro Lopo [Sun, 3 May 2015 22:19:04 +0000 (08:19 +1000)] 
Fix safeHaskell test for llvm backend

Test was failing (could not execute: pgmlc) for arm (which uses
the llvm backend) due to the `-pgmlc pgmlc` in OPTIONS_GHC. It
was also failing on amd64 in the same way when `-fllvm` was
added to the command line. Its safe to remove because the
compiler should already know which llvm tool to use.

Test Plan: validate

Reviewers: dterei, austin

Subscribers: bgamari, thomie

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

4 years agoarm: Force non-executable stack (#10369)
Erik de Castro Lopo [Fri, 1 May 2015 10:33:03 +0000 (20:33 +1000)] 
arm: Force non-executable stack (#10369)

Test `T703` was found to be failing on arm/linux. The solution
was to add a linker flag to explicitly set the stack to
non-executable.

Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
Test Plan: validate on x86_64 and arm linux

Reviewers: ezyang, rwbarton, austin

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10369

4 years agoPermit empty closed type families
Adam Gundry [Mon, 4 May 2015 14:30:37 +0000 (15:30 +0100)] 
Permit empty closed type families

Fixes #9840 and #10306, and includes an alternative resolution to #8028.
This permits empty closed type families, and documents them in the user
guide. It updates the Haddock submodule to support the API change.

Test Plan: Added `indexed-types/should_compile/T9840` and updated
`indexed-types/should_fail/ClosedFam4` and `th/T8028`.

Reviewers: austin, simonpj, goldfire

Reviewed By: goldfire

Subscribers: bgamari, jstolarek, thomie, goldfire

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

GHC Trac Issues: #9840, #10306

4 years agoMove IP, Symbol, Nat to ghc-prim
Simon Peyton Jones [Fri, 1 May 2015 14:05:11 +0000 (15:05 +0100)] 
Move IP, Symbol, Nat to ghc-prim

This motivation is to declare class IP much earlier (in ghc-prim),
so that implicit parameters (which depend on IP) is available
to library code, notably the 'error' function.

* Move class IP from base:GHC.IP
                to ghc-prim:GHC.Classes
* Delete module GHC.IP from base

* Move types Symbol and Nat
      from base:GHC.TypeLits
      to ghc-prim:GHC.Types

There was a name clash in GHC.RTS.Flags, where I renamed
the local type Nat to RtsNat.

4 years agoKill off the default types in ghc-prim
Simon Peyton Jones [Fri, 1 May 2015 14:06:00 +0000 (15:06 +0100)] 
Kill off the default types in ghc-prim

We were trying to load the type for Integer to do defaulting
in ghc-prim, but it's simply not available at that time.

4 years agoMake Derived NomEq rewrite only Derived NomEq
Simon Peyton Jones [Fri, 1 May 2015 08:42:21 +0000 (09:42 +0100)] 
Make Derived NomEq rewrite only Derived NomEq

See Note [Deriveds do rewrite Deriveds].  The important point
is that we want to maintain the Note [Can-rewrite relation]
property, lest we risk loops.

4 years agoUpdate haddock submodule to track TyCon change
Simon Peyton Jones [Fri, 1 May 2015 08:40:37 +0000 (09:40 +0100)] 
Update haddock submodule to track TyCon change

4 years agoRefactor TyCon to eliminate TupleTyCon
Simon Peyton Jones [Thu, 30 Apr 2015 22:33:42 +0000 (23:33 +0100)] 
Refactor TyCon to eliminate TupleTyCon

This makes TupleTyCon into an ordinary AlgTyCon, distinguished
by its AlgTyConRhs, rather than a separate constructor of TyCon.

It is preparatory work for making constraint tuples into classes,
for which the ConstraintTuple tuples will have a TyConParent
of a ClassTyCon.  Tuples didn't have this possiblity before.

The patch affects other modules because I eliminated the
unsatisfactory partial functions tupleTyConBoxity and tupleTyConSort.
And tupleTyConArity which is just tyConArity.

4 years agoComments only
Simon Peyton Jones [Thu, 30 Apr 2015 13:44:23 +0000 (14:44 +0100)] 
Comments only

4 years agoTypeset Backpack semantic entities in figure, figure-ify all asides.
Edward Z. Yang [Thu, 30 Apr 2015 22:54:09 +0000 (15:54 -0700)] 
Typeset Backpack semantic entities in figure, figure-ify all asides.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoTypo fixes (mostly in comments)
Gabor Greif [Thu, 30 Apr 2015 09:47:08 +0000 (11:47 +0200)] 
Typo fixes (mostly in comments)

4 years agoTidy up treatment of FlexibleContexts
Simon Peyton Jones [Thu, 30 Apr 2015 08:18:49 +0000 (09:18 +0100)] 
Tidy up treatment of FlexibleContexts

Previously (Trac #10351) we could get

    Non type-variable argument in the constraint: C [t]
    (Use FlexibleContexts to permit this)
    When checking that `f' has the inferred type
      f :: forall t. C [t] => t -> ()

which is a bit stupid: we have *inferred* a type that we
immediately *reject*.  This patch arranges that that the
generalisation mechanism (TcSimplify.decideQuantification)
doesn't pick a predicate that will be rejected by the
subsequent validity check.

This forced some minor refactoring, as usual.

4 years agoTypeset Backpack syntax in a figure
Simon Peyton Jones [Wed, 29 Apr 2015 23:19:45 +0000 (00:19 +0100)] 
Typeset Backpack syntax in a figure

4 years agoTest Trac #10226
Simon Peyton Jones [Wed, 29 Apr 2015 14:11:15 +0000 (15:11 +0100)] 
Test Trac #10226

Fixed by the patch for #10009

4 years agoImprove improvement in the constraint solver
Simon Peyton Jones [Wed, 29 Apr 2015 12:43:09 +0000 (13:43 +0100)] 
Improve improvement in the constraint solver

This regrettably-big patch substantially improves the way in which
"improvement" happens in the constraint solver.  It was triggered by
trying to crack Trac #10009, but it turned out to solve #10340 as
well.

The big picture, with several of the trickiest examples, is described
in Note [The improvement story] in TcInteract.

The major change is this:

* After solving we explicitly try "improvement", by
     - making the unsolved Wanteds into Deriveds
     - allowing Deriveds to rewrite Deriveds
  This more aggressive rewriting "unlocks" some extra
  guess-free unifications.

* The main loop is in TcInteract.solveSimpleWanteds, but I also ended
  up refactoring TcSimplify.simpl_loop, and its surrounding code.

  Notably, any insolubles from the Givens are pulled out
  and treated separately, rather than staying in the inert set
  during the solveSimpleWanteds loop.

There are a lot of follow-on changes

* Do not emit generate Derived improvements from Wanteds.
  This saves work in the common case where they aren't needed.

* For improvement we should really do type-class reduction on Derived
  constraints in doTopReactDict.  That entailed changing the GenInst
  constructor a bit; a local and minor change

* Some annoying faffing about with dropping derived constraints;
  see dropDerivedWC, dropDerivedSimples, dropDerivedInsols,
  and their Notes.

* Some substantial refactoring in TcErrors.reportWanteds.
  This work wasn't strictly forced, but I got sucked into it.
  All the changes are in TcErrors.

* Use TcS.unifyTyVar consistently, rather than setWantedTyBind,
  so that unifications are properly tracked.

* Refactoring around solveWantedsTcM, solveWantedsAndDrop.
  They previously guaranteed a zonked result, but it's more
  straightforward for clients to zonk.

4 years agoDon't print evidence in TcFlatten
Simon Peyton Jones [Wed, 29 Apr 2015 10:26:23 +0000 (11:26 +0100)] 
Don't print evidence in TcFlatten

Because when flattening a Derived constraint, the evidence doesn't exist
(it's an error thunk)

4 years agoA little outright bug in canEqTyVar2
Simon Peyton Jones [Wed, 29 Apr 2015 10:23:05 +0000 (11:23 +0100)] 
A little outright bug in canEqTyVar2

I had 'ev' where I should have had 'new_ev'.  It's quite hard to make
this bug cause a failure, but I did eventually get a Lint error
somewhere.  Anyway, it's just a typo, I think.

4 years agoSeed SpecConstr from local calls
Simon Peyton Jones [Tue, 28 Apr 2015 16:42:37 +0000 (17:42 +0100)] 
Seed SpecConstr from local calls

Seed SpecConstr based on *local* calls as well as *RHS* calls.
See Note [Seeding top-level recursive groups].  The change here
is mentioned here:

   NB: before Apr 15 we used (a) only, but Dimitrios had an example
       where (b) was  crucial, so I added that.

This is a pretty small change, requested by Dimitrios, that adds
SpecConstr call patterns from the rest of the module, as well as ones
from the RHS.

Still to come: #10346.

4 years agoBackpack docs: merge backpack-shaping into algorithm, sigs no longer provide
Edward Z. Yang [Tue, 28 Apr 2015 22:14:28 +0000 (15:14 -0700)] 
Backpack docs: merge backpack-shaping into algorithm, sigs no longer provide

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoFull type checking Backpack details.
Edward Z. Yang [Mon, 27 Apr 2015 22:41:29 +0000 (15:41 -0700)] 
Full type checking Backpack details.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoBackpack docs: explain alternate merging scheme.
Edward Z. Yang [Mon, 27 Apr 2015 17:34:23 +0000 (10:34 -0700)] 
Backpack docs: explain alternate merging scheme.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoFlesh out some more Backpack examples in the merging section.
Edward Z. Yang [Mon, 27 Apr 2015 16:25:41 +0000 (09:25 -0700)] 
Flesh out some more Backpack examples in the merging section.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agobase: Export GHC.Event(.Internal).Lifetime
Ben Gamari [Sat, 25 Apr 2015 07:13:49 +0000 (09:13 +0200)] 
base: Export GHC.Event(.Internal).Lifetime

This was an unfortunate oversight in the original event manager rework
patch. Fixes #10308

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

4 years agoAdd missing since-annotations for c024af131b9e2538
Herbert Valerio Riedel [Sat, 25 Apr 2015 07:12:44 +0000 (09:12 +0200)] 
Add missing since-annotations for c024af131b9e2538

See also #9049

4 years agoBump base version to 4.8.2.0
Herbert Valerio Riedel [Sat, 25 Apr 2015 06:53:38 +0000 (08:53 +0200)] 
Bump base version to 4.8.2.0

This is needed because GHC 7.10.2 requires a minor version bump to base-4.8.1.0

Several test outputs needed base-4.8.1.0 replaced by base-4.8.2.0

4 years agoUpdates to Backpack documentation based on recent visit to MSRC.
Edward Z. Yang [Mon, 20 Apr 2015 21:52:19 +0000 (22:52 +0100)] 
Updates to Backpack documentation based on recent visit to MSRC.

Includes lots of shaping examples, and a shaping algorithm description.

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