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

Summary:
When parsing

    {-# LANGUAGE ScopedTypeVariables #-}

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

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

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

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

Test Plan: ./validate

Reviewers: goldfire, austin, simonpj

Reviewed By: simonpj

Subscribers: bgamari, mpickering, thomie, goldfire

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

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

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

Thanks to Christiaan Baaj for spotting this.

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

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

Fixes Trac #10430.

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

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

This reverts commit b199536be25ea046079587933cc73d0a948a0626.

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

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

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

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

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

This reverts commit b0b11ad93cf8470caed572dc16e5cf91304fa355.

It apparently made Harbormaster sad.

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

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

It turns out we weren't checking for consistent DynFlag settings when
doing `setSessionDynFlags`, as #10052 showed. While the main driver
handled it in `DynFlags` via `parseDynamicFlags`, we didn't check this
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 agoIn ghci linker, link against all previous temp sos (#10322)
Reid Barton [Tue, 19 May 2015 06:23:59 +0000 (01:23 -0500)] 
In ghci linker, link against all previous temp sos (#10322)

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

Reviewed By: trommler, austin

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

GHC Trac Issues: #10322

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

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

Reviewed By: austin

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

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

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

Reviewed By: rwbarton, austin

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

GHC Trac Issues: #10074

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

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

Reviewed By: austin

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

GHC Trac Issues: #10386

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

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

Fixes #10110.

Reviewed By: austin

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

GHC Trac Issues: #10110

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

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

Patch also fixes build breakage reported in #10244.

Signed-off-by: Sergei Trofimovich <siarheit@google.com>
Reviewers: rwbarton, nomeata, austin

Reviewed By: nomeata, austin

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10244

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

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

See Note [Instance and Given overlap] in TcInteract

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

Make tuple constraints be handled by a perfectly ordinary
type class, with the component constraints being the
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

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

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

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

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

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

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

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

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

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

Differential Revision: 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.