ghc.git
4 years agoDynamically link all loaded packages in new object
Peter Trommler [Sat, 7 Mar 2015 17:13:37 +0000 (11:13 -0600)] 
Dynamically link all loaded packages in new object

Summary:
As a result of fixing #8935 we needed to open shared libraries
with RTLD_LOCAL and so symbols from packages loaded earlier
cannot be found anymore. We need to include in the link all
packages loaded so far.

This fixes #10058

Test Plan: validate

Reviewers: hvr, simonmar, austin

Reviewed By: austin

Subscribers: rwbarton, thomie

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

GHC Trac Issues: #10058

4 years agoImprove core linter so it catches unsafeCoerce problems (T9122)
Alexander Vershilov [Sat, 7 Mar 2015 17:13:12 +0000 (11:13 -0600)] 
Improve core linter so it catches unsafeCoerce problems (T9122)

Summary:
This is a draft of the patch that is sent for review.

In this patch required changes in linter were introduced
and actual check:

 - new helper function: primRepSizeB
 - primRep check for floating
 - Add access to dynamic flags in linter.
 - Implement additional lint rules.

Reviewers: austin, goldfire, simonpj

Reviewed By: simonpj

Subscribers: thomie

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

GHC Trac Issues: #9122

4 years agoDon't assume tools are in same directory as ghc in some cases
Phil Ruffwind [Sat, 7 Mar 2015 17:04:00 +0000 (11:04 -0600)] 
Don't assume tools are in same directory as ghc in some cases

Summary: Tools such as `ghc-pkg` and `runghc` are no longer required to be in the same directory as `ghc` when running tests, provided that `TEST_HC` is not explicitly set and an in-tree compiler is not used.  Fixes #10126.

Reviewers: thomie, austin

Reviewed By: thomie, austin

Subscribers: thomie

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

GHC Trac Issues: #10126

4 years agoAdd missed test (uuugh)
Austin Seipp [Sat, 7 Mar 2015 16:40:18 +0000 (10:40 -0600)] 
Add missed test (uuugh)

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoCustom `Typeable` solver, that keeps track of kinds.
Iavor S. Diatchki [Sat, 7 Mar 2015 16:37:31 +0000 (10:37 -0600)] 
Custom `Typeable` solver, that keeps track of kinds.

Summary:
This implements the new `Typeable` solver: when GHC sees `Typeable` constraints
it solves them on the spot.

The current implementation creates `TyCon` representations on the spot.

Pro: No overhead at all in code that does not use `Typeable`
Cons: Code that uses `Typeable` may create multipe `TyCon` represntations.

We have discussed an implementation where representations of `TyCons` are
computed once, in the module, where a datatype is declared.  This would
lead to more code being generated:  for a promotable datatype we need to
generate `2 + number_of_data_cons` type-constructro representations,
and we have to do that for all programs, even ones that do not intend to
use typeable.

I added code to emit warning whenevar `deriving Typeable` is encountered---
the idea being that this is not needed anymore, and shold be fixed.

Also, we allow `instance Typeable T` in .hs-boot files, but they result
in a warning, and are ignored.  This last one was to avoid breaking exisitng
code, and should become an error, eventually.

Test Plan:
1. GHC can compile itself.
2. I compiled a number of large libraries, including `lens`.
    - I had to make some small changes:
      `unordered-containers` uses internals of `TypeReps`, so I had to do a 1 line fix
    - `lens` needed one instance changed, due to a poly-kinded `Typeble` instance

3. I also run some code that uses `syb` to traverse a largish datastrucutre.
I didn't notice any signifiant performance difference between the 7.8.3 version,
and this implementation.

Reviewers: simonpj, simonmar, austin, hvr

Reviewed By: austin, hvr

Subscribers: thomie

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

GHC Trac Issues: #9858

4 years agoRe-export `<$` from Prelude (#10113)
Herbert Valerio Riedel [Sat, 7 Mar 2015 10:37:52 +0000 (11:37 +0100)] 
Re-export `<$` from Prelude (#10113)

This is a follow-up to eb3661f2b9f8472f3714774126ebe1183484dd85
re-exporting `<$` from `Prelude` as well.

Reviewed By: austin, ekmett

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

4 years agoRe-export `<$>` from Prelude (#10113)
Herbert Valerio Riedel [Sat, 7 Mar 2015 10:10:34 +0000 (11:10 +0100)] 
Re-export `<$>` from Prelude (#10113)

Whether to re-export the `<$>` non-method operator from `Prelude` wasn't
explicitly covered in the original AMP proposal[1], but it turns out that
not doing so forces most code that makes use of applicatives to import
`Data.Functor` or `Control.Applicative` just to get that operator into
scope.  To this end, it was proposed to add `<$>` to Prelude as well[2].

The down-side is that this increases the amount of redundant-import
warnings triggered, as well as the relatively minor issue of stealing
the `<$>` operator from the default namespace for good (although at this
point `<$>` is supposed to be ubiquitous anyway due to `Applicative`
being implicitly required into the next Haskell Report)

 [1]: https://wiki.haskell.org/Functor-Applicative-Monad_Proposal
 [2]: http://thread.gmane.org/gmane.comp.lang.haskell.libraries/24161

Reviewed By: austin, ekmett

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

4 years agoDrop redundant LANGUAGE pragmas
Herbert Valerio Riedel [Sat, 7 Mar 2015 10:08:01 +0000 (11:08 +0100)] 
Drop redundant LANGUAGE pragmas

Due to refactoring & cleanups those pragmas have become redundant by now

4 years agotestsuite: format commands using config dict
Thomas Miedema [Fri, 6 Mar 2015 19:17:41 +0000 (20:17 +0100)] 
testsuite: format commands using config dict

Summary:
Allow `cmd_wrapper` to return a format string that can refer to config values.
Very useful! This allows for many tests to be defined in pure Python, instead
of in an additional script or Makefile.

Example:

  def Thpc(cmd):
    return(cmd + ' && {hpc} report Thpc.tix')
  test('Thpc', [cmd_wrapper(Thpc), only_ways['hpc']), compile_and_run, [''])

The `{hpc}` is replaced by the value of `config.hpc`. The result is that the
module `Thpc` first gets compiled, then the binary `Thpc` is run, and then the
`hpc report` command is run. The output of all of this is redirected
(and later appended) to Thpc.run.stdout/stderr as normally.

Reviewed By: austin

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

4 years agoUpdate shift/reduce commentary in Parser.y
Edward Z. Yang [Wed, 4 Mar 2015 00:05:45 +0000 (16:05 -0800)] 
Update shift/reduce commentary in Parser.y

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

Test Plan: none

Reviewers: austin, simonpj, simonmar

Subscribers: thomie

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

4 years agoTypos in docs [ci skip]
Gabor Greif [Fri, 6 Mar 2015 13:12:25 +0000 (14:12 +0100)] 
Typos in docs [ci skip]

4 years agotestsuite: accept updated output
Austin Seipp [Fri, 6 Mar 2015 01:56:34 +0000 (19:56 -0600)] 
testsuite: accept updated output

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoUser manual section to document the principles of kind inference
Simon Peyton Jones [Thu, 5 Mar 2015 22:32:44 +0000 (22:32 +0000)] 
User manual section to document the principles of kind inference

This just documents the conclusions of Trac #10132

4 years agolibraries: update deepseq submodule
Austin Seipp [Thu, 5 Mar 2015 19:31:28 +0000 (13:31 -0600)] 
libraries: update deepseq submodule

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoAdd public rnf/hash operations to TypeRep/TyCon
Herbert Valerio Riedel [Thu, 5 Mar 2015 17:56:03 +0000 (11:56 -0600)] 
Add public rnf/hash operations to TypeRep/TyCon

Summary:
`TyCon` and `TypeRep` are supposed to be abstract, by providing these
additional few public operations the need to import
`Data.Typeable.Internal` is reduced, and future changes to the internal
structure of `TypeRep`/`TyCon` shouldn't require changes in packages such as
`deepseq` or `hashable` anymore (hopefully).

Reviewers: ekmett, simonpj, tibbe, austin

Reviewed By: ekmett, simonpj, austin

Subscribers: thomie

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

4 years agoRemove unused/undocumented flag `-fhpc-no-auto`
Thomas Miedema [Wed, 4 Mar 2015 20:26:31 +0000 (21:26 +0100)] 
Remove unused/undocumented flag `-fhpc-no-auto`

Added in 53a5d0b01. Perhaps accidentally? It didn't do anything back then
either.

Reviewed By: austin

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

4 years agotravis: Get libstdc++ from a more sensible location
Joachim Breitner [Wed, 4 Mar 2015 16:37:09 +0000 (17:37 +0100)] 
travis: Get libstdc++ from a more sensible location

4 years agoThree other test updates following the fix to Trac #7854
Simon Peyton Jones [Wed, 4 Mar 2015 13:20:28 +0000 (13:20 +0000)] 
Three other test updates following the fix to Trac #7854

4 years agoCheck for equality before deferring
Simon Peyton Jones [Wed, 4 Mar 2015 13:18:57 +0000 (13:18 +0000)] 
Check for equality before deferring

This one was a bit of a surprise. In fixing Trac #7854, I moved
the checkAmbiguity tests to checkValidType. That meant it happened
even for monotypes, and that turned out to be very expensive in
T9872a, for reasons described in this (new) Note in TcUnify:

    Note [Check for equality before deferring]
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Particularly in ambiguity checks we can get equalities like (ty ~ ty).
    If ty involves a type function we may defer, which isn't very sensible.
    An egregious example of this was in test T9872a, which has a type signature
           Proxy :: Proxy (Solutions Cubes)
    Doing the ambiguity check on this signature generates the equality
       Solutions Cubes ~ Solutions Cubes
    and currently the constraint solver normalises both sides at vast cost.
    This little short-cut in 'defer' helps quite a bit.

I fixed the problem with a quick equality test, but it feels like an ad-hoc
solution; I think we might want to do something in the constraint solver too.

(The problem was there all along, just more hidden.)

4 years agoComments only
Simon Peyton Jones [Wed, 4 Mar 2015 12:01:12 +0000 (12:01 +0000)] 
Comments only

4 years agoA raft of small changes associated with -XConstrainedClassMethods
Simon Peyton Jones [Wed, 4 Mar 2015 11:59:47 +0000 (11:59 +0000)] 
A raft of small changes associated with -XConstrainedClassMethods

See Trac #7854.  Specifically:

* Major clean up and simplification of check_op in checkValidClass;
  specifically
     - use checkValidType on the entire method-selector type to detect
       ambiguity
     - put a specific test for -XConstrainedClassMethods

* Make -XConstrainedClassMethods be implied by -XMultiParamTypeClasses
  (a bit ad-hoc but see #7854), and document in the user manual.

* Do the checkAmbiguity test just once in TcValidity.checkValidType,
  rather than repeatedly at every level. See Note [When to call checkAmbiguity]

* Add -XAllowAmbiguousTypes in GHC.IP, since 'ip' really is ambiguous.
  (It's a rather magic function.)

* Improve location info for check_op in checkValidClass

* Update quite a few tests, which had genuinely-ambiguous class
  method signatures.  Some I fixed by making them unambiguous; some
  by adding -XAllowAmbiguousTypes

4 years agoSome minor refactoring in TcHsType
Simon Peyton Jones [Tue, 3 Mar 2015 21:54:58 +0000 (21:54 +0000)] 
Some minor refactoring in TcHsType

4 years agoTidy up and improve comments about one-shot info
Simon Peyton Jones [Tue, 3 Mar 2015 21:52:28 +0000 (21:52 +0000)] 
Tidy up and improve comments about one-shot info

(Triggered by investigating Trac #10102 etc.)

4 years agoFix -Werror build failure in RtsMain
Tamar Christina [Wed, 4 Mar 2015 01:41:43 +0000 (19:41 -0600)] 
Fix -Werror build failure in RtsMain

Summary:
Something in Excn.h's include chain is loading _mingw.h which is defining a macro that
PosixSource.h is going to define.

_mingw.h's version properly checks if it has already been defined and skips it, so fixing the warning can be done
by just including Excn.h later (moved it to before last include).

Test Plan: ./validate

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

4 years agoClarify some comments in Packages.hs [skip-ci]
Edward Z. Yang [Tue, 3 Mar 2015 21:05:03 +0000 (13:05 -0800)] 
Clarify some comments in Packages.hs [skip-ci]

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoDon't use deriveUnique *twice* in flattenTys.
Richard Eisenberg [Tue, 3 Mar 2015 17:55:54 +0000 (12:55 -0500)] 
Don't use deriveUnique *twice* in flattenTys.

Previously, we used deriveUnique and then uniqAway. This worked
doubly hard to avoid clashes. Doing just uniqAway is enough.

This commit also includes clarifying comments.

4 years agoAdd various instances to newtypes in Data.Monoid
Oleg Grenrus [Tue, 3 Mar 2015 13:21:43 +0000 (07:21 -0600)] 
Add various instances to newtypes in Data.Monoid

Summary:
Add Functor instances for Dual, Sum and Product
Add Foldable instances for Dual, Sum and Product
Add Traversable instances for Dual, Sum and Product
Add Foldable and Traversable instances for First and Last
Add Applicative, Monad instances to Dual, Sum, Product
Add MonadFix to Data.Monoid wrappers
Derive Data for Identity
Add Data instances to Data.Monoid wrappers
Add Data (Alt f a) instance

Reviewers: ekmett, dfeuer, hvr, austin

Reviewed By: dfeuer, austin

Subscribers: thomie

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

GHC Trac Issues: #10107

4 years agoPretty-print # on unboxed literals in core
Thomas Miedema [Tue, 3 Mar 2015 13:21:32 +0000 (07:21 -0600)] 
Pretty-print # on unboxed literals in core

Summary:
Ticket #10104 dealt with showing the '#'s on types with unboxed fields. This
commit pretty prints the '#'s on unboxed literals in core output.

Test Plan: simplCore/should_compile/T8274

Reviewers: jstolarek, simonpj, austin

Reviewed By: simonpj, austin

Subscribers: simonpj, thomie

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

GHC Trac Issues: #8274

4 years agoReplaced SEH handles with VEH handlers which should work uniformly across x86 and x64
Tamar Christina [Tue, 3 Mar 2015 13:20:55 +0000 (07:20 -0600)] 
Replaced SEH handles with VEH handlers which should work uniformly across x86 and x64

Summary:
On Windows, the default action for things like division by zero and
segfaults is to pop up a Dr. Watson error reporting dialog if the exception
is unhandled by the user code.

This is a pain when we are SSHed into a Windows machine, or when we
want to debug a problem with gdb (gdb will get a first and second chance to
handle the exception, but if it doesn't the pop-up will show).

veh_excn provides two macros, `BEGIN_CATCH` and `END_CATCH`, which
will catch such exceptions in the entire process and die by
printing a message and calling `stg_exit(1)`.

Previously this code was handled using SEH (Structured Exception Handlers)
however each compiler and platform have different ways of dealing with SEH.

`MSVC` compilers have the keywords `__try`, `__catch` and `__except` to have the
compiler generate the appropriate SEH handler code for you.

`MinGW` compilers have no such keywords and require you to manually set the
SEH Handlers, however because SEH is implemented differently in x86 and x64
the methods to use them in GCC differs.

`x86`: SEH is based on the stack, the SEH handlers are available at `FS[0]`.
     On startup one would only need to add a new handler there. This has
     a number of issues such as hard to share handlers and it can be exploited.

`x64`: In order to fix the issues with the way SEH worked in x86, on x64 SEH handlers
     are statically compiled and added to the .pdata section by the compiler.
     Instead of being thread global they can now be Image global since you have to
     specify the `RVA` of the region of code that the handlers govern.

You can on x64 Dynamically allocate SEH handlers, but it seems that (based on
experimentation and it's very under-documented) that the dynamic calls cannot override
static SEH handlers in the .pdata section.

Because of this and because GHC no longer needs to support < windows XP, the better
alternative for handling errors would be using the in XP introduced VEH.

The bonus is because VEH (Vectored Exception Handler) are a runtime construct the API
is the same for both x86 and x64 (note that the Context object does contain CPU specific
structures) and the calls are the same cross compilers. Which means this file can be
simplified quite a bit.
Using VEH also means we don't have to worry about the dynamic code generated by GHCi.

Test Plan:
Prior to this diff the tests for `derefnull` and `divbyzero` seem to have been disabled for windows.
To reproduce the issue on x64:
1) open ghci
2) import GHC.Base
3) run: 1 `divInt` 0

which should lead to ghci crashing an a watson error box displaying.

After applying the patch, run:

make TEST="derefnull divbyzero"

on both x64 and x86 builds of ghc to verify fix.

Reviewers: simonmar, austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #6079

4 years agoCite the TrieMap idea [skip-ci]
Edward Z. Yang [Mon, 2 Mar 2015 22:54:30 +0000 (14:54 -0800)] 
Cite the TrieMap idea [skip-ci]

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
4 years agoGive full-precision time for BEGIN_SAMPLE/END_SAMPLE.
Edward Z. Yang [Tue, 24 Feb 2015 04:02:25 +0000 (20:02 -0800)] 
Give full-precision time for BEGIN_SAMPLE/END_SAMPLE.

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

Test Plan: validate

Reviewers: simonmar, austin

Subscribers: thomie

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

4 years agoSmall emitCmmSwitch/emitCmmLitSwitch refactoring
Joachim Breitner [Mon, 2 Mar 2015 20:35:05 +0000 (21:35 +0100)] 
Small emitCmmSwitch/emitCmmLitSwitch refactoring

both use the same logic to divide, so put it in
    divideBranches :: Ord a => [(a,b)] -> ([(a,b)], a, [(a,b)])

4 years agoImprove if-then-else tree for cases on literal values
Joachim Breitner [Mon, 2 Mar 2015 20:20:24 +0000 (21:20 +0100)] 
Improve if-then-else tree for cases on literal values

Previously, in the branch of the if-then-else tree, it would emit a
final check if the scrut matches the alternative, even if earlier
comparisons alread imply this equality. By keeping track of the bounds
we can skip this check. Of course this is only sound for integer types.
This closes #10129.
Differential Revision: https://phabricator.haskell.org/D693

4 years agoTypos in non-code
Gabor Greif [Mon, 2 Mar 2015 18:28:36 +0000 (19:28 +0100)] 
Typos in non-code

4 years agoRemoved unused constrained which causes build to fail with -Werror
Tamar Christina [Mon, 2 Mar 2015 17:10:37 +0000 (11:10 -0600)] 
Removed unused constrained which causes build to fail with -Werror

Summary:
 Unused Show constraint is cauzing validate build failures because of -Werror.
 Removing constraint solves the problem

Test Plan: validate

Reviewers: austin, hvr

Reviewed By: austin

Subscribers: thomie

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

4 years ago`make test` in root directory now runs fulltest
Thomas Miedema [Mon, 2 Mar 2015 17:10:09 +0000 (11:10 -0600)] 
`make test` in root directory now runs fulltest

Summary:
Currently, running `make test` in:
  /                   runs fast testsuite
  /testsuite          doesn't work
  /testsuite/tests    runs slow testsuite

This commit:
  * changes `make test` in the ghc root directory to run the slow testsuite,
    just like it already does in `testsuite/tests`
  * adds some simple targets to `/testsuite`, that all delegate to
    `/testsuite/tests`
  * adds a new target `fasttest` to the toplevel Makefile, with a shorthand
    name `fast` (for consistency with /testsuite and /testsuite/tests)
  * declares some more targets PHONY for safety

Wiki pages that need updating:
  * Building/StandardTargets
  * Buliding/RunningTests

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

4 years agoFix typecheck tests (--slow)
Thomas Miedema [Mon, 2 Mar 2015 17:09:50 +0000 (11:09 -0600)] 
Fix typecheck tests (--slow)

Summary:
Fallout from AMP, recent addition of -fwarn-redundant-constraints and others.
Some of these tests need `mtl` or `syb` to run.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

4 years agoFix detection of llvm-x.x
Thomas Miedema [Mon, 2 Mar 2015 17:09:33 +0000 (11:09 -0600)] 
Fix detection of llvm-x.x

Summary:
Four bug fixes and a little refactoring.
* `find -perm \mode` should be `find -perm /mode` (#9697)

* `find -regex '$3' should be `find -regex "$3"` (#7661)

From `man sh` on my system (Ubuntu 14.04):
"Enclosing characters in single quotes preserves the literal meaning of all
the characters ..."

* LlcCmd and OptCmd should be passed to ghc, using `-pgmlo` and `-pgmlc`, for
  detection of #9439.

* -pgmlo and -pgmlc were undocumented because of an xml tag misplacement.

Test Plan:
The aclocal.m4 macro has seen about 10 iterations since its inception. Without a
testsuite, I can't guarantee this version is bug free either. It's all pretty
frustrating.

Reviewers: bgamari, austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #9697, #7661, #9439

4 years agofix typos in coreSyn
Javran Cheng [Mon, 2 Mar 2015 17:09:23 +0000 (11:09 -0600)] 
fix typos in coreSyn

Summary: fixed few typos in coreSyn, no trac number

Test Plan: validate

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

4 years agoShow record construction/update without parens
Thomas Miedema [Mon, 2 Mar 2015 17:07:58 +0000 (11:07 -0600)] 
Show record construction/update without parens

Summary:
The 2010 report mentions:
"The result of `show` is a syntactically correct Haskell expression ...
Parenthesis are only added where needed, //ignoring associativity//".

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #2530

4 years agoImprove documentation of infinite inlining bug
Simon Peyton Jones [Mon, 2 Mar 2015 16:30:36 +0000 (16:30 +0000)] 
Improve documentation of infinite inlining bug

This fixes the documentation suggestion in Trac #10105

4 years agoTwo kind-polymorphism fixes (Trac #10122)
Simon Peyton Jones [Mon, 2 Mar 2015 16:29:39 +0000 (16:29 +0000)] 
Two kind-polymorphism fixes (Trac #10122)

* The original fix was to improve the documentation, in
  line with the suggestions on Trac #10122

* But in doing so I realised that the kind generalisation in
  TcRnDriver.tcRnType was completely wrong.  So I fixed that
  and updated Note [Kind-generalise in tcRnType] to explain.

4 years agoComments only
Simon Peyton Jones [Thu, 26 Feb 2015 17:43:31 +0000 (17:43 +0000)] 
Comments only

4 years agoTest Trac #10112
Simon Peyton Jones [Thu, 26 Feb 2015 17:27:15 +0000 (17:27 +0000)] 
Test Trac #10112

4 years agoImprove comments on coreView/tcView, and combine coreExpandTyCon/tcExpandTyCon
Simon Peyton Jones [Thu, 26 Feb 2015 17:26:56 +0000 (17:26 +0000)] 
Improve comments on coreView/tcView, and combine coreExpandTyCon/tcExpandTyCon

This is minor stuff triggered by Trac #10103.

* Fix outdated comments on tcView/coreView (we should really combine
  them with a new name, but I'll leave that slightly-disruptive change
  for now)

* Combine tcExpandTyCon_maybe and coreExpandTyCon_maybe (which were identical)
  into expandSynTyCon_maybe

* A few more comment fixups

4 years agoComments only
Simon Peyton Jones [Thu, 26 Feb 2015 16:41:12 +0000 (16:41 +0000)] 
Comments only

4 years agoExtend the docs for Data.List.transpose
Joachim Breitner [Mon, 2 Mar 2015 09:55:22 +0000 (10:55 +0100)] 
Extend the docs for Data.List.transpose

by giving a sufficient general example to explain what happens when the
rows are not of the same lengths. Thanks to Doug McIlroy for the
suggestoin. Fixes #10128.

4 years agoUpdate process submodule to 1.2.3.0 snapshot
Herbert Valerio Riedel [Fri, 27 Feb 2015 07:47:36 +0000 (08:47 +0100)] 
Update process submodule to 1.2.3.0 snapshot

This fixes the compilation failure

  libraries\process\System\Process\Internals.hs:36:5:
      Not in scope: `stopDelegateControlC'
      ...

(however, GHC HEAD skipped process-1.2.2 which has that issue)

4 years agoAllocationLimitExceeded should be a child of SomeAsyncException
Simon Marlow [Wed, 25 Feb 2015 09:31:18 +0000 (09:31 +0000)] 
AllocationLimitExceeded should be a child of SomeAsyncException

4 years agoAxe ModFinderCache, folding it into a generalized FinderCache.
Edward Z. Yang [Tue, 27 Jan 2015 23:55:52 +0000 (15:55 -0800)] 
Axe ModFinderCache, folding it into a generalized FinderCache.

Summary:
FinderCache is now keyed by a module, ModuleNames in the home package are
turned into Modules using thisPackage in the dynamic flags.  Simplifies some
code!

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

Reviewers: simonpj, austin

Subscribers: thomie

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

4 years agoFix comments, and a little reformatting
Simon Marlow [Tue, 24 Feb 2015 08:22:25 +0000 (08:22 +0000)] 
Fix comments, and a little reformatting

4 years agoUpdate submodule to Cabal 1.22.1.0 release
Herbert Valerio Riedel [Sun, 22 Feb 2015 17:04:27 +0000 (18:04 +0100)] 
Update submodule to Cabal 1.22.1.0 release

4 years agoEmulate GMP 5+ operations for GMP 4.x compat
Herbert Valerio Riedel [Sun, 22 Feb 2015 16:50:07 +0000 (17:50 +0100)] 
Emulate GMP 5+ operations for GMP 4.x compat

The following operations are only (officially) available starting with
GMP 5.0:

- `mpn_and_n`
- `mpn_andn_n`
- `mpn_ior_n`
- `mpn_xor_n`

In order to properly support GMP 4.x, we simply emulate those operation
in terms of `mpz_*` operations available in GMP 4.x (unless GMP>=5.x
available, obviously) while incurring some overhead. Ideally, GMP 4.x
environments will reach their EOL in the foreseeable future...

This fixes #10003

Reviewed By: austin

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

4 years agodriver: split -fwarn-unused-binds into 3 flags (fixes #17)
Oleg Grenrus [Mon, 23 Feb 2015 14:51:28 +0000 (08:51 -0600)] 
driver: split -fwarn-unused-binds into 3 flags (fixes #17)

Summary: New flags:

 -fwarn-unused-top-binds
 -fwarn-unused-local-binds
 -fwarn-unused-pattern-binds

Test Plan: `tests/rename/should_compile/T17` tests

Correct other tests

Reviewers: austin, rwbarton

Reviewed By: austin, rwbarton

Subscribers: rwbarton, carter, thomie

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

GHC Trac Issues: #17

4 years agoComment typo
Joachim Breitner [Mon, 23 Feb 2015 14:45:59 +0000 (15:45 +0100)] 
Comment typo

and reference to long-removed note in CallArity.hs

4 years agoSystem.IO.Error: Fix a documentation link to Control.Exception.Exception
Wieland Hoffmann [Mon, 5 Jan 2015 15:44:30 +0000 (16:44 +0100)] 
System.IO.Error: Fix a documentation link to Control.Exception.Exception

Instead of using double quotes (which are used to link to modules), use
single quotes (that are used to link, among others, to link to types,
which C.E.Exception is).

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agotestsuite: update .gitignore
Austin Seipp [Mon, 23 Feb 2015 14:07:44 +0000 (08:07 -0600)] 
testsuite: update .gitignore

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoProvide a faster implementation for the Read Integer instance
Marios Titas [Mon, 23 Feb 2015 12:46:25 +0000 (06:46 -0600)] 
Provide a faster implementation for the Read Integer instance

Summary:
The current implementation of the Read Integer instance has quadratic
complexity and thus performs badly on large inputs. This patch provides a
rather simple sub-quadratic algorithm. For small inputs, we use the old
algorithm (there is a small penalty for that). The gains for large
inputs can be dramatic: on my system, the time to perform
    read (take 1000000 $ cycle "1234567890") :: Integer
drops from 65 seconds to less than a second.

Note that we already provide an ad-hoc instance for Show Integer, so this
patch essentially does the same thing for Read Integer.

Test Plan: Check that read :: String -> Integer returns correct results for inputs of various sizes.

Reviewers: austin, hvr

Reviewed By: austin, hvr

Subscribers: ekmett, thomie

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

GHC Trac Issues: #10067

4 years agobase: Fix (**) implementation for Data.Complex
Alexander [Mon, 23 Feb 2015 11:44:33 +0000 (05:44 -0600)] 
base: Fix (**) implementation for Data.Complex

See the extensive discussion in #8539.

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoFix build bogons due to missing separator
Austin Seipp [Mon, 23 Feb 2015 11:48:15 +0000 (05:48 -0600)] 
Fix build bogons due to missing separator

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agobase: fix broken link (#10088)
Austin Seipp [Mon, 23 Feb 2015 11:32:56 +0000 (05:32 -0600)] 
base: fix broken link (#10088)

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agodocs: Flatten MAKEHELP/SUBMAKEHELP
Austin Seipp [Mon, 23 Feb 2015 11:21:11 +0000 (05:21 -0600)] 
docs: Flatten MAKEHELP/SUBMAKEHELP

There's no reason to have two files, and this is one step towards a
cleaner root directory.

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agodocs: add INSTALL.md to root dir (#9926)
Austin Seipp [Mon, 23 Feb 2015 11:19:59 +0000 (05:19 -0600)] 
docs: add INSTALL.md to root dir (#9926)

This gives a very quick rundown on installation for end-users (HACKING
etc is for developers/possible contributors).

Signed-off-by: Austin Seipp <austin@well-typed.com>
4 years agoShow '#' on unboxed literals
Thomas Miedema [Mon, 23 Feb 2015 09:40:58 +0000 (03:40 -0600)] 
Show '#' on unboxed literals

Test Plan: deriving/should_run/T10104

Reviewers: austin, jstolarek

Reviewed By: austin, jstolarek

Subscribers: thomie

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

GHC Trac Issues: #10104

4 years agorts/linker: ignore unknown PE sections
Tamar Christina [Mon, 23 Feb 2015 09:40:43 +0000 (03:40 -0600)] 
rts/linker: ignore unknown PE sections

Summary: Currently the linker tries to see if it understands/knows every section in the PE file before it continues. If it encounters a section it doesn't know about it errors out. Every time there's a change in MinGW compiler that adds a new section to the PE file this will break the ghc linker. The new sections don't need to be understood by `ghc` to continue so instead of erroring out the section is just ignored. When running with `-debug` the sections that are ignored will be printed.

Test Plan:
See the file `ghcilinkerbug.zip` in #9907.

 1) unzip file content.
 2) open examplecpp.cabal and change base <4.8 to <4.9.
 3) execute cabal file with cabal repl.

Applying the patch makes `cabal repl` in step 3) work.

Note that the file will fail on a `___mingw_vprintf` not being found. This is because of the `cc-options` specifying `-std=c++0x`, which will also require `libmingwex.a` to be linked in but wasn't specified in the cabal file. To fix this, remove the `cc-options` which defaults to c99.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #9907, #7103, #10051, #7056, #8546

4 years agoDeclare some Makefile targets to be PHONY
Thomas Miedema [Mon, 23 Feb 2015 09:40:34 +0000 (03:40 -0600)] 
Declare some Makefile targets to be PHONY

Summary:
Given:
  a Makefile with a non-PHONY target called `target`
If:
  after running `make target`, a file exists with the same name as `target`
  (it was either already there, or it was created by running `make target`)
And:
  `target` has no dependencies, such as `clean`, that modify or delete that
  file
Then:
  subsequent invocations of `make target` will not have any effect.

Solution: make `target` PHONY.

BAD:
  ```
  foo:
          ...
          ./foo
  ```

BETTER:
  ```
  foo:
          ...
          ./foo
  .PHONY: foo
  ```

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

4 years agoAlways ignore user-package-db when running tests
Thomas Miedema [Mon, 23 Feb 2015 09:40:23 +0000 (03:40 -0600)] 
Always ignore user-package-db when running tests

Summary:
The user package database was already ignored for systems that
`have_subprocess`.

To [wiki:Debugging/InstallingPackagesInplace install] a package inplace:
`cabal install
  --with-compiler=<inplace-ghc>
  --with-package-db=<inplace-package-db>`
  <package>

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

4 years agoFix for ticket #10078: ensure that tcPluginStop is called even in case of type errors
Jan Bracker [Mon, 23 Feb 2015 09:40:15 +0000 (03:40 -0600)] 
Fix for ticket #10078: ensure that tcPluginStop is called even in case of type errors

Summary:
Remove unused variable that appeared through the fix for ticket #10078

Merge branch 'master' of git://git.haskell.org/ghc

Added comment with bug ID.

Reviewers: adamgundry, gridaphobe, austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #10078

4 years agoMake top-level "configure" accept and propagate --with-curses-{includes,libraries...
PHO [Mon, 23 Feb 2015 09:40:05 +0000 (03:40 -0600)] 
Make top-level "configure" accept and propagate --with-curses-{includes,libraries} to libraries

Summary:
If curses is installed into some non-standard path, we currently have
to say something like the following in mk/build.mk:

  libraries/terminfo_CONFIGURE_OPTS += \
      --configure-option=--with-curses-includes=/somewhere/include \
      --configure-option=--with-curses-libraries=/somewhere/lib

This is because the top-level configure does not accept nor propagate
--with-curses-{includes,libraries} to libraries while it does so for
iconv, gmp and libffi. It would be nice if curses were handled in the
same manner.

Test Plan: Install curses into some non-standard path. Then run the top-level "configure" script with options "--with-curses-includes=/path/to/curses/include" and "--with-curses-libraries=/path/to/curses/lib".

Reviewers: austin

Reviewed By: austin

Subscribers: thomie, PHO

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

GHC Trac Issues: #10096

4 years agoError out on `Main` without `main` in GHCi (#7765)
Thomas Miedema [Mon, 23 Feb 2015 09:38:26 +0000 (03:38 -0600)] 
Error out on `Main` without `main` in GHCi (#7765)

Summary:
GHC does 2 validation checks for module `Main`:
* does `main` exist
* is `main` exported (#414)

The second check is done in ghc as well as in ghci (and runghc and ghc -e).
The first check however is currently not done in ghci, to prevent "'main' is
not in scope" errors when loading simple scripts. See commit d28ba8c8009 for
more information.

This commit tightens the special case for ghci. When the file does not contain
a main function, but does contain an explicit module header (i.e. "module Main
where"), then /do/ raise an error in ghci (and runghc and ghc -e) as well

Test Plan:
module/T7765: a module Main with an explicit module header but without a
main function should be an error for all Ways.

Additionaly: delete test module/mod174. It was added in commit 5a54c38, but it
is a duplicate of module/T414.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #7765

4 years agofix bus errors on SPARC caused by unalignment access to alloc_limit (fixes #10043)
Karel Gardas [Sat, 14 Feb 2015 21:46:47 +0000 (22:46 +0100)] 
fix bus errors on SPARC caused by unalignment access to alloc_limit (fixes #10043)

Reviewers: austin, simonmar

Subscribers: thomie

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

4 years ago{Data,Generic(1),MonadZip} instances for Identity
Herbert Valerio Riedel [Sun, 22 Feb 2015 14:21:18 +0000 (15:21 +0100)] 
{Data,Generic(1),MonadZip} instances for Identity

These instances were missed when the identity functor was added to
the `base` package (re #9664).

Reviewed By: ekmett

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

4 years agoUnbreak travis by installing llvm-3.6
Joachim Breitner [Sat, 21 Feb 2015 14:42:39 +0000 (15:42 +0100)] 
Unbreak travis by installing llvm-3.6

4 years ago[ci skip] comment typo
Joachim Breitner [Mon, 2 Feb 2015 13:10:31 +0000 (14:10 +0100)] 
[ci skip] comment typo

4 years agoComments only
Simon Peyton Jones [Fri, 20 Feb 2015 08:52:12 +0000 (08:52 +0000)] 
Comments only

4 years agoComments only
Simon Peyton Jones [Fri, 13 Feb 2015 17:43:39 +0000 (17:43 +0000)] 
Comments only

4 years agoComments only
Simon Peyton Jones [Fri, 13 Feb 2015 13:53:14 +0000 (13:53 +0000)] 
Comments only

4 years agoAdd a bizarre corner-case to cgExpr (Trac #9964)
Simon Peyton Jones [Fri, 20 Feb 2015 08:49:32 +0000 (08:49 +0000)] 
Add a bizarre corner-case to cgExpr (Trac #9964)

David Feuer managed to tickle a corner case in the
code generator. See Note [Scrutinising VoidRep]
in StgCmmExpr.

I rejigged the comments in that area of the code generator
  Note [Dodgy unsafeCoerce 1]
  Note [Dodgy unsafeCoerce 2]
but I can't say I fully understand them, alas.

4 years agoDon't report instance constraints with fundeps as redundant
Simon Peyton Jones [Thu, 19 Feb 2015 23:14:17 +0000 (23:14 +0000)] 
Don't report instance constraints with fundeps as redundant

More subtlety due to functional dependencies.
Note [Redundant constraints in instance decls] in TcErrors.

Fixes Trac #10100.

4 years agofix T7600 run on bigendian platform
Karel Gardas [Thu, 19 Feb 2015 21:41:02 +0000 (22:41 +0100)] 
fix T7600 run on bigendian platform

4 years agoComments only
Simon Peyton Jones [Thu, 19 Feb 2015 20:53:55 +0000 (20:53 +0000)] 
Comments only

4 years agoFix #10045
Thomas Winant [Wed, 18 Feb 2015 16:13:37 +0000 (10:13 -0600)] 
Fix #10045

Summary:
SPJ's solution is to only bring the `TcId` (which includes the type) of a
binder into scope when it had a non-partial type signature.

Take care of this by only storing the `TcId` in `TcSigInfo` of non-partial
type signatures, hence the change to `sig_poly_id :: Maybe TcId`. Only in case
of a `Just` will we bring the `TcId` in scope. We still need to know the name
of the binder, even when it has a partial type signature, so add a `sig_name
:: Name` field. The field `sig_partial :: Bool` is no longer necessary, so
reimplement `isPartialSig` in terms of `sig_poly_id`.

Note that the new test case fails, but not because of a panic, but because the
`Num a` constraint is missing. Adding an extra-constraints wildcard to
`copy`'s signature would fix it.

Test Plan: validate

Reviewers: simonpj, austin

Reviewed By: simonpj

Subscribers: thomie

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

GHC Trac Issues: #10045

4 years agoTypo in function name
Gabor Greif [Wed, 18 Feb 2015 17:18:49 +0000 (18:18 +0100)] 
Typo in function name

4 years agoCleanup ghc-pkg
Thomas Miedema [Wed, 18 Feb 2015 15:46:49 +0000 (09:46 -0600)] 
Cleanup ghc-pkg

Summary:
* Delete dead code in ghc-pkg (not_yet ready since 2004)
* remove --auto-ghc-libs
Commit 78185538b (2011) mentions:
"Deprecate the ghc-pkg --auto-ghci-libs flag
It was never a universal solution. It only worked with the GNU linker.
It has not been used by Cabal for ages. GHCi can now load .a files so it will
not be needed in future."
"Warning: --auto-ghci-libs is deprecated and will be removed in GHC 7.4"

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

4 years agorunghc: be explicit about ghc version (#9054)
Thomas Miedema [Wed, 18 Feb 2015 15:46:40 +0000 (09:46 -0600)] 
runghc: be explicit about ghc version (#9054)

Summary: runghc-7.x should always call ghc-7.x

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #9054

4 years agoDo not clobber CPPFLAGS nor LDFLAGS, fixes #10093
PHO [Wed, 18 Feb 2015 15:46:30 +0000 (09:46 -0600)] 
Do not clobber CPPFLAGS nor LDFLAGS, fixes #10093

Summary: Append -I/-L flags to CPPFLAGS/LDFLAGS instead of clobbering.

Test Plan: Install libiconv into /some/non-standard/path. Set CONF_GCC_LINKER_OPTS_STAGE{0,1,2} to -Wl,-rpath,/some/non-standard/path/lib. And then run ./configure with arguments --with-iconv-includes=/some/non-standard/path/include and --with-iconv-libraries=/some/non-standard/path/lib

Reviewers: hvr, austin

Reviewed By: austin

Subscribers: thomie, PHO

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

GHC Trac Issues: #10093

4 years agoRevert "Eta-expand argument to foldr in mapM_ for []"
Austin Seipp [Tue, 17 Feb 2015 15:08:12 +0000 (09:08 -0600)] 
Revert "Eta-expand argument to foldr in mapM_ for []"

This change lacked justification (or a test!) for its improvements, and
I merged it on a sweep of Phabricator without fixing this. Trac #10034.

This reverts commit 7cf87fc6928f0252d9f61719e2344e6c69237079.

4 years agoAdd configurable verbosity level to hpc
Yuras Shumovich [Tue, 17 Feb 2015 14:39:54 +0000 (08:39 -0600)] 
Add configurable verbosity level to hpc

Summary:
All commands now have `--verbosity` flag, so one can configure
cabal package with `--hpc-options="--verbosity=0"`.

Right now it is used only in `hpc markup` to supress unnecessary
output.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #10091

4 years agoDelete vestigial external core code (#9402)
Thomas Miedema [Tue, 17 Feb 2015 14:39:43 +0000 (08:39 -0600)] 
Delete vestigial external core code (#9402)

Test Plan: harbormaster

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #9402

4 years agoImprove outdated ghc-pkg cache warning (#9606)
Thomas Miedema [Tue, 17 Feb 2015 14:39:35 +0000 (08:39 -0600)] 
Improve outdated ghc-pkg cache warning (#9606)

Summary: No more frustration.

Test Plan: I tested it.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #9606

4 years agoDon't truncate traceEvents to 512 bytes (#8309)
Thomas Miedema [Tue, 17 Feb 2015 14:39:08 +0000 (08:39 -0600)] 
Don't truncate traceEvents to 512 bytes (#8309)

Summary:
Don't call postLogMsg to post a user msg, because it truncates messages to
512 bytes.

Rename traceCap_stderr and trace_stderr to vtraceCap_stderr and trace_stderr,
to signal that they take a va_list (similar to vdebugBelch vs debugBelch).

See #3874 for the original reason behind traceFormatUserMsg.

See the commit msg in #9395 (d360d440) for a discussion about using
null-terminated strings vs strings with an explicit length.

Test Plan:
Run `cabal install ghc-events` and inspect the result of `ghc-events show` on
an eventlog file created with `ghc -eventlog Test.hs` and `./Test +RTS -l`,
where Test.hs contains:

```
import Debug.Trace
main = traceEvent (replicate 510 'a' ++ "bcd") $ return ()
```

Depends on D655.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #8309

4 years agoAdd missing va_end to va_start
Thomas Miedema [Tue, 17 Feb 2015 14:37:49 +0000 (08:37 -0600)] 
Add missing va_end to va_start

Summary: See also ab9711d8.

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

4 years agoRemove RAWCPP_FLAGS (Task #9094)
Thomas Miedema [Tue, 17 Feb 2015 14:36:56 +0000 (08:36 -0600)] 
Remove RAWCPP_FLAGS (Task #9094)

Reviewers: carter, austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #9094

4 years agoFix typo in error message
Gabor Greif [Tue, 17 Feb 2015 15:00:24 +0000 (16:00 +0100)] 
Fix typo in error message

4 years agoMove comments about evaluating the message to the top of the module
Simon Peyton Jones [Sun, 15 Feb 2015 20:22:57 +0000 (20:22 +0000)] 
Move comments about evaluating the message to the top of the module

The remarks apply equally to all the functions here (Trac #9795)

4 years agoImprove typechecking of RULEs, to account for type wildcard holes
Simon Peyton Jones [Sun, 15 Feb 2015 20:21:42 +0000 (20:21 +0000)] 
Improve typechecking of RULEs, to account for type wildcard holes

This fixes Trac #10072. Previously the type-hole constraint was
escaping to top level, but it belongs in the scope of the skolems
bound by the RULE.

4 years agoComments only
Simon Peyton Jones [Sun, 15 Feb 2015 20:14:54 +0000 (20:14 +0000)] 
Comments only

4 years agoImprove documentation of 'trace'
Simon Peyton Jones [Fri, 13 Feb 2015 23:10:18 +0000 (23:10 +0000)] 
Improve documentation of 'trace'

See Trac #9795.

4 years agoRefactor decideQuantification
Simon Peyton Jones [Fri, 13 Feb 2015 23:09:34 +0000 (23:09 +0000)] 
Refactor decideQuantification

Richard was interrogating me about decideQuantification yesterday.
I got a bit stuck on the promote_tvs part. This refactoring

 * simplifes the API of decideQuantification

 * move mkMinimalBySCs into decideQuantification (a better place for it)

 * moves promotion out of decideQuantification (where it didn't really
   fit), and comments much more fully what is going on with the promtion stuff

 * comments decideQuantification more fully

 * coments the EqPred case of quantifyPred more fully

It turned out that the theta returned by decideQuantification,
and hence by simplifyInfer, is now fully zonked, so I could remove
a zonking in TcBinds.

4 years agoTiny refactoring; no change in behaviour
Simon Peyton Jones [Thu, 12 Feb 2015 15:31:15 +0000 (15:31 +0000)] 
Tiny refactoring; no change in behaviour