13 months ago#15387 Fix setting testsuite verbose to zero
Antti Siponen [Sun, 15 Jul 2018 19:47:42 +0000 (21:47 +0200)] 
#15387 Fix setting testsuite verbose to zero

13 months agoFix space leaks
Simon Marlow [Mon, 18 Jun 2018 16:18:10 +0000 (17:18 +0100)] 
Fix space leaks

All these were detected by -fghci-leak-check when GHC was
compiled *without* optimisation (e.g. using the "quick" build flavour).

Unfortunately I don't know of a good way to keep this working.  I'd like
to just disable the -fghci-leak-check flag when the compiler is built
without optimisation, but it doesn't look like we have an easy way to do
that. And even if we could, it would be fragile anyway,

Test Plan: `cd testsuite/tests/ghci; make`

Reviewers: bgamari, hvr, erikd, tdammers

Subscribers: tdammers, rwbarton, thomie, carter

GHC Trac Issues: #15246

Differential Revision:

13 months agoFix parse errors in core-spec.pdf
Ryan Scott [Mon, 16 Jul 2018 13:51:18 +0000 (09:51 -0400)] 
Fix parse errors in core-spec.pdf

`core-spec.pdf` was emitting parse errors due to not specifying
role arguments in some uses of `nth`. This patch adds those
role arguments. (Credit goes to Richard Eisenberg for actually
figuring out what said arguments should be.)

Test Plan: Read it

Reviewers: goldfire, bgamari

Reviewed By: goldfire

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15373

Differential Revision:

13 months agoTTG typo: XFieldOcc should be XCFieldOcc
Alan Zimmerman [Sun, 15 Jul 2018 17:35:51 +0000 (19:35 +0200)] 
TTG typo: XFieldOcc should be XCFieldOcc

In the following

  data FieldOcc pass = FieldOcc { extFieldOcc     :: XFieldOcc pass
                                , rdrNameFieldOcc :: Located RdrName
                                   -- ^ See Note [Located RdrNames] in HsExpr

    | XFieldOcc
        (XXFieldOcc pass)

we are using XFieldOcc for both the extFieldOcc type and the extra constructor.

The first one should be XCFieldOcc

Updates haddock submodule
closes #15386

13 months agoReplace atomicModifyMutVar#
David Feuer [Sun, 15 Jul 2018 14:15:15 +0000 (10:15 -0400)] 
Replace atomicModifyMutVar#

Reviewers: simonmar, hvr, bgamari, erikd, fryguybob, rrnewton

Reviewed By: simonmar

Subscribers: fryguybob, rwbarton, thomie, carter

GHC Trac Issues: #15364

Differential Revision:

13 months agoReclassify some performance tests
Richard Eisenberg [Sat, 14 Jul 2018 19:43:01 +0000 (15:43 -0400)] 
Reclassify some performance tests

There were some performance tests not classified by
compiler_num_stats_field, causing erroneous failures when
testing a DEBUG compiler. This fixes that oversight,
addressing #15374.

13 months agoDisable -fghci-leak-check in DEBUG mode
Richard Eisenberg [Sat, 14 Jul 2018 19:27:48 +0000 (15:27 -0400)] 
Disable -fghci-leak-check in DEBUG mode

The DEBUG compiler's GHCi still leaks. This commit suppresses
testsuite failures due to this leak. See #15372.

13 months agoDon't mkNakedCastTy on something unsaturated
Richard Eisenberg [Thu, 12 Jul 2018 22:45:09 +0000 (18:45 -0400)] 
Don't mkNakedCastTy on something unsaturated

A recent commit added extra calls to mkNakedCastTy to satisfy
Note [The tcType invariant]. However, some of these casts were
being applied to unsaturated type family applications, which
caused ASSERTion failures in TcFlatten later on. This patch
is more judicious in using mkNakedCastTy to avoid this problem.

13 months agoMove check for dcUserTyVarBinders invariant
Richard Eisenberg [Thu, 12 Jul 2018 21:48:39 +0000 (17:48 -0400)] 
Move check for dcUserTyVarBinders invariant

Previously, this check was done in mkDataCon. But this
sometimes caused assertion failures if an invalid data
con was made. I've moved the check to checkValidDataCon,
where we can be sure the datacon is otherwise valid first.

13 months agoMake some tests robust against DEBUG compiler
Richard Eisenberg [Thu, 12 Jul 2018 20:21:54 +0000 (16:21 -0400)] 
Make some tests robust against DEBUG compiler

Several tests were failing in DEBUG mode, but fixing this
was easy: just pass $(TEST_HC_OPTS) in the relevant

13 months agoRemove ASSERTion about increasing TcLevels
Richard Eisenberg [Thu, 12 Jul 2018 20:10:34 +0000 (16:10 -0400)] 
Remove ASSERTion about increasing TcLevels

This removes an ASSERTion that TcLevels should increase by
exactly one in every implication. While this is a sensible
goal, it's not true today, and we should not be crippling
DEBUG for everyone while debugging this.

The ASSERT was added in 261dd83cacec71edd551e9c581d05285c9ea3226

13 months agoOptimise wakeups for STM
Simon Marlow [Sun, 15 Jul 2018 00:02:03 +0000 (20:02 -0400)] 
Optimise wakeups for STM

Avoids repeated wakeup messages being sent when a TVar is written to
multiple times. See comments for details.

Test Plan:
* Test from #15136 (will be added to stm shortly)
* existing stm tests

Reviewers: bgamari, osa1, erikd

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15136

Differential Revision:

13 months agoRemove random submodule
Ben Gamari [Sat, 14 Jul 2018 15:47:37 +0000 (11:47 -0400)] 
Remove random submodule

I believe this was originally introduced to help test DPH, which is now

13 months agoBump unix submodule
Ben Gamari [Sat, 14 Jul 2018 15:43:31 +0000 (11:43 -0400)] 
Bump unix submodule

13 months agoBump directory submodule to v1.3.3.0
Ben Gamari [Sat, 14 Jul 2018 15:36:00 +0000 (11:36 -0400)] 
Bump directory submodule to v1.3.3.0

13 months agoBump mtl submodule to v2.2.2
Ben Gamari [Sat, 14 Jul 2018 15:33:13 +0000 (11:33 -0400)] 
Bump mtl submodule to v2.2.2

13 months agoBump haskeline submodule to
Ben Gamari [Sat, 14 Jul 2018 15:29:55 +0000 (11:29 -0400)] 
Bump haskeline submodule to

13 months agoComments only
Simon Peyton Jones [Fri, 13 Jul 2018 22:49:41 +0000 (23:49 +0100)] 
Comments only

13 months agosubmodule update
Simon Marlow [Fri, 13 Jul 2018 16:34:17 +0000 (17:34 +0100)] 
submodule update

13 months agoImprove comments about CUSKs
Simon Peyton Jones [Fri, 13 Jul 2018 09:25:38 +0000 (10:25 +0100)] 
Improve comments about CUSKs

13 months agoRefactor floatEqualities slightly
Simon Peyton Jones [Fri, 13 Jul 2018 08:15:22 +0000 (09:15 +0100)] 
Refactor floatEqualities slightly

A conversation with Richard made me look at floatEqualities again, and
I did not find it easy to read.  This patch refactors it sligtly, with
better variable naming and more comments.

I also fixed one latent bug, I think.  In the old code, I think that an
inhomogeneous or insoluble equality (co :: t1~t2), which doesn't float,
and ended up in the badly-named 'non_eqs', would not end up in
extended_skols.  Hence it would not capture an equality that mentioned
'co' in a cast.

It's still pretty horrible (as Richard and I have been discussing),
but better.

No change in behaviour; I don't know a program that would trigger
the latent bug, even if my reasoning is right.

13 months agoFix processHeapClosureForDead CONSTR_NOCAF case
Ömer Sinan Ağacan [Fri, 13 Jul 2018 12:12:19 +0000 (15:12 +0300)] 
Fix processHeapClosureForDead CONSTR_NOCAF case

CONSTR_NOCAF was introduced with 55d535da10d as a replacement for
CONSTR_STATIC and CONSTR_NOCAF_STATIC, however, as explained in Note
[static constructors], we copy CONSTR_NOCAFs (which can also be seen in
evacuate) during GC, and they can become dead, like other CONSTR_X_Ys.
processHeapClosureForDead is updated to reflect this.

Test Plan: Validates on x86_64. Existing failures on i386.

Reviewers: simonmar, bgamari, erikd

Reviewed By: simonmar, bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #7836, #15063, #15087, #15165

Differential Revision:

13 months agoUpdate submodule
Simon Marlow [Fri, 13 Jul 2018 09:29:02 +0000 (10:29 +0100)] 
Update submodule

13 months agoFix deadlock between STM and throwTo
Simon Marlow [Thu, 12 Jul 2018 14:13:47 +0000 (10:13 -0400)] 
Fix deadlock between STM and throwTo

There was a lock-order reversal between lockTSO() and the TVar lock,
see #15136 for the details.

It turns out we can fix this pretty easily by just deleting all the
locking code(!).  The principle for unblocking a `BlockedOnSTM` thread
then becomes the same as for other kinds of blocking: if the TSO
belongs to this capability then we do it directly, otherwise we send a
message to the capability that owns the TSO. That is, a thread blocked
on STM is owned by its capability, as it should be.

The possible downside of this is that we might send multiple messages
to wake up a thread when the thread is on another capability. This is
safe, it's just not very efficient.  I'll try to do some experiments
to see if this is a problem.

Test Plan: Test case from #15136 doesn't deadlock any more.

Reviewers: bgamari, osa1, erikd

Reviewed By: osa1

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15136

Differential Revision:

13 months agoRun the renamed source plugin after each HsGroup
Matthew Pickering [Thu, 12 Jul 2018 14:12:23 +0000 (10:12 -0400)] 
Run the renamed source plugin after each HsGroup

This allows modification of each `HsGroup` after it has been renamed.

The old behaviour of keeping the renamed source until later can be
recovered if desired by using the `keepRenamedSource` plugin but it
shouldn't really be necessary as it can be inspected in the `TcGblEnv`.

Reviewers: nboldi, bgamari, alpmestan

Reviewed By: nboldi, alpmestan

Subscribers: alpmestan, rwbarton, thomie, carter

GHC Trac Issues: #15315

Differential Revision:

13 months agoRelease notes about source plugins
Matthew Pickering [Thu, 12 Jul 2018 14:10:00 +0000 (10:10 -0400)] 
Release notes about source plugins

13 months agodocs: remove leftovers of static flags
Krzysztof Gogolewski [Thu, 12 Jul 2018 14:08:14 +0000 (10:08 -0400)] 
docs: remove leftovers of static flags

Remove "dynamic + :set" category from documentation,
because all dynamic flags support ":set"; this is a
leftover of "static + :set".

Test Plan: make html

Reviewers: bgamari, mpickering

Reviewed By: mpickering

Subscribers: mpickering, osa1, rwbarton, thomie, carter

Differential Revision:

13 months agoExport findImportUsage and ImportDeclUsage
Matthew Pickering [Thu, 12 Jul 2018 14:08:01 +0000 (10:08 -0400)] 
Export findImportUsage and ImportDeclUsage

Reviewers: bgamari, alpmestan

Reviewed By: alpmestan

Subscribers: alpmestan, rwbarton, thomie, carter

GHC Trac Issues: #15335

Differential Revision:

13 months agoFix handling of unbound constructor names in TH #14627
Michael Sloan [Thu, 12 Jul 2018 14:07:28 +0000 (10:07 -0400)] 
Fix handling of unbound constructor names in TH #14627

Also adds a comment to UnboundVarE clarifying that it also is used for
unbound constructor identifiers, since that isn't very clear from the

Test Plan: testsuite/tests/th/T14627.hs

Reviewers: goldfire, bgamari

Reviewed By: goldfire

Subscribers: rwbarton, thomie, carter

Differential Revision:

13 months agoFix handling of ApplicativeDo in TH AST quotes
Michael Sloan [Thu, 12 Jul 2018 14:05:41 +0000 (10:05 -0400)] 
Fix handling of ApplicativeDo in TH AST quotes


Also fixes a parenthesization bug in pprStmt when ret_stripped is True

Test Plan: tests added to testsuite

Trac issues: #14471

Reviewers: goldfire, bgamari

Reviewed By: goldfire

Subscribers: rwbarton, thomie, carter

Differential Revision:

13 months agoAdd flag to show docs of valid hole fits
Matthías Páll Gissurarson [Thu, 12 Jul 2018 13:57:00 +0000 (09:57 -0400)] 
Add flag to show docs of valid hole fits

One issue with valid hole fits is that the function names can often be
opaque for the uninitiated, such as `($)`. This diff adds a new flag,
`-fshow-docs-of-hole-fits` that adds the documentation of the identifier
in question to the message, using the same mechanism as the `:doc`

As an example, with this flag enabled, the valid hole fits for `_ ::
[Int] -> Int` will include:

Valid hole fits include
  head :: forall a. [a] -> a
    {-^ Extract the first element of a list, which must be non-empty.-}
    with head @Int
    (imported from ‘Prelude’ (and originally defined in ‘GHC.List’))

And one of the refinement hole fits, `($) _`, will read:

Valid refinement hole fits include
  ($) (_ :: [Int] -> Int)
      where ($) :: forall a b. (a -> b) -> a -> b
      {-^ Application operator.  This operator is redundant, since ordinary
          application @(f x)@ means the same as @(f '$' x)@. However, '$' has
          low, right-associative binding precedence, so it sometimes allows
          parentheses to be omitted; for example:

          > f $ g $ h x  =  f (g (h x))

          It is also useful in higher-order situations, such as @'map' ('$' 0) xs@,
          or @'Data.List.zipWith' ('$') fs xs@.

          Note that @($)@ is levity-polymorphic in its result type, so that
              foo $ True    where  foo :: Bool -> Int#
          is well-typed-}
      with ($) @'GHC.Types.LiftedRep @[Int] @Int
      (imported from ‘Prelude’ (and originally defined in ‘GHC.Base’))


Another example of where documentation can come in very handy, is when
working with the `lens` library.

When you compile
{-# OPTIONS_GHC -fno-show-provenance-of-hole-fits -fshow-docs-of-hole-fits #-}
module LensDemo where

import Control.Lens
import Control.Monad.State

newtype Test = Test { _value :: Int } deriving (Show)

value :: Lens' Test Int
value f (Test i) = Test <$> f i

updTest :: Test -> Test
updTest t = t &~ do
    _ value (1 :: Int)

You get:
  Valid hole fits include
    (#=) :: forall s (m :: * -> *) a b.
            MonadState s m =>
            ALens s s a b -> b -> m ()
      {-^ A version of ('Control.Lens.Setter..=') that works on 'ALens'.-}
      with (#=) @Test @(StateT Test Identity) @Int @Int
    (<#=) :: forall s (m :: * -> *) a b.
             MonadState s m =>
             ALens s s a b -> b -> m b
      {-^ A version of ('Control.Lens.Setter.<.=') that works on 'ALens'.-}
      with (<#=) @Test @(StateT Test Identity) @Int @Int
    (<*=) :: forall s (m :: * -> *) a.
             (MonadState s m, Num a) =>
             LensLike' ((,) a) s a -> a -> m a
      {-^ Multiply the target of a numerically valued 'Lens' into your 'Monad''s
          state and return the result.

          When you do not need the result of the multiplication,
          ('Control.Lens.Setter.*=') is more flexible.

          ('<*=') :: ('MonadState' s m, 'Num' a) => 'Lens'' s a -> a -> m a
          ('<*=') :: ('MonadState' s m, 'Num' a) => 'Control.Lens.Iso.Iso'' s a -> a -> m a
      with (<*=) @Test @(StateT Test Identity) @Int
    (<+=) :: forall s (m :: * -> *) a.
             (MonadState s m, Num a) =>
             LensLike' ((,) a) s a -> a -> m a
      {-^ Add to the target of a numerically valued 'Lens' into your 'Monad''s state
          and return the result.

          When you do not need the result of the addition,
          ('Control.Lens.Setter.+=') is more flexible.

          ('<+=') :: ('MonadState' s m, 'Num' a) => 'Lens'' s a -> a -> m a
          ('<+=') :: ('MonadState' s m, 'Num' a) => 'Control.Lens.Iso.Iso'' s a -> a -> m a
      with (<+=) @Test @(StateT Test Identity) @Int
    (<-=) :: forall s (m :: * -> *) a.
             (MonadState s m, Num a) =>
             LensLike' ((,) a) s a -> a -> m a
      {-^ Subtract from the target of a numerically valued 'Lens' into your 'Monad''s
          state and return the result.

          When you do not need the result of the subtraction,
          ('Control.Lens.Setter.-=') is more flexible.

          ('<-=') :: ('MonadState' s m, 'Num' a) => 'Lens'' s a -> a -> m a
          ('<-=') :: ('MonadState' s m, 'Num' a) => 'Control.Lens.Iso.Iso'' s a -> a -> m a
      with (<-=) @Test @(StateT Test Identity) @Int
    (<<*=) :: forall s (m :: * -> *) a.
              (MonadState s m, Num a) =>
              LensLike' ((,) a) s a -> a -> m a
      {-^ Modify the target of a 'Lens' into your 'Monad''s state by multipling a value
          and return the /old/ value that was replaced.

          When you do not need the result of the operation,
          ('Control.Lens.Setter.*=') is more flexible.

          ('<<*=') :: ('MonadState' s m, 'Num' a) => 'Lens'' s a -> a -> m a
          ('<<*=') :: ('MonadState' s m, 'Num' a) => 'Iso'' s a -> a -> m a
      with (<<*=) @Test @(StateT Test Identity) @Int
    (Some hole fits suppressed; use -fmax-valid-hole-fits=N or -fno-max-valid-hole-fits)


Which allows you to see at a glance what opaque operators like `(<<*=)`
and `(<#=)` do.

Reviewers: bgamari, sjakobi

Reviewed By: sjakobi

Subscribers: sjakobi, alexbiehl, rwbarton, thomie, carter

Differential Revision:

13 months agoMake boot work if ACLOCAL_PATH is not set
Neil Mitchell [Mon, 9 Jul 2018 15:17:57 +0000 (16:17 +0100)] 
Make boot work if ACLOCAL_PATH is not set

13 months agoFix gcdExtInteger (trac#15350)
Bodigrim [Fri, 6 Jul 2018 23:20:10 +0000 (00:20 +0100)] 
Fix gcdExtInteger (trac#15350)

13 months agoThe Types section in Core-Spec doc is out-dated
ningning [Fri, 6 Jul 2018 21:23:49 +0000 (17:23 -0400)] 
The Types section in Core-Spec doc is out-dated

13 months agoTrac #8581 users_guide/glasgow_exts section 10.7
AntC [Wed, 20 Jun 2018 11:17:31 +0000 (23:17 +1200)] 
Trac #8581 users_guide/glasgow_exts section 10.7

as per comments on the ticket; also linked to Haskell folk art of 'Smart constructors'.

13 months agoBump xhtml submodule to 3000.2.2.1
Ben Gamari [Wed, 11 Jul 2018 00:20:51 +0000 (20:20 -0400)] 
Bump xhtml submodule to 3000.2.2.1

13 months agoRegister 'haddockHTMLs' for inplace builds
Alec Theriault [Tue, 19 Jun 2018 17:12:47 +0000 (10:12 -0700)] 
Register 'haddockHTMLs' for inplace builds

13 months agoLink to iterate' doesn't work.
David Sanders [Fri, 29 Jun 2018 16:27:33 +0000 (09:27 -0700)] 
Link to iterate' doesn't work.

13 months agoAttempt to fix travis build
Michael Sloan [Fri, 29 Jun 2018 00:07:45 +0000 (17:07 -0700)] 
Attempt to fix travis build

13 months agoAdding missing 'no'
jhb563 [Tue, 26 Jun 2018 03:05:48 +0000 (20:05 -0700)] 
Adding missing 'no'

13 months agoCorrect Simple to Complex wording
Sasa Bogicevic [Thu, 21 Jun 2018 09:06:13 +0000 (11:06 +0200)] 
Correct Simple to Complex wording

13 months agoMinor refactoring in CmmUtils.mkLiveness
Ömer Sinan Ağacan [Thu, 12 Jul 2018 14:09:52 +0000 (17:09 +0300)] 
Minor refactoring in CmmUtils.mkLiveness

Test Plan: validate

Reviewers: bgamari, simonmar

Reviewed By: simonmar

Subscribers: rwbarton, thomie, carter

Differential Revision:

13 months agoUse IfaceAppArgs to store an IfaceAppTy's arguments
Ryan Scott [Wed, 11 Jul 2018 16:28:38 +0000 (12:28 -0400)] 
Use IfaceAppArgs to store an IfaceAppTy's arguments

Currently, an `IfaceAppTy` has no way to tell whether its
argument is visible or not, so it simply treats all arguments as
visible, leading to #15330. We already have a solution for this
problem in the form of the `IfaceTcArgs` data structure, used by
`IfaceTyConApp` to represent the arguments to a type constructor.
Therefore, it makes sense to reuse this machinery for `IfaceAppTy`,
so this patch does just that.

This patch:

1. Renames `IfaceTcArgs` to `IfaceAppArgs` to reflect its more
   general purpose.
2. Changes the second field of `IfaceAppTy` from `IfaceType` to
   `IfaceAppArgs`, and propagates the necessary changes through. In
   particular, pretty-printing an `IfaceAppTy` now goes through the
   `IfaceAppArgs` pretty-printer, which correctly displays arguments
   as visible or not for free, fixing #15330.
3. Changes `toIfaceTypeX` and related functions so that when
   converting an `AppTy` to an `IfaceAppTy`, it flattens as many
   argument `AppTy`s as possible, and then converts those arguments
   into an `IfaceAppArgs` list, using the kind of the function
   `Type` as a guide. (Doing so minimizes the number of times we need
   to call `typeKind`, which is more expensive that finding the kind
   of a `TyCon`.)

Test Plan: make test TEST=T15330

Reviewers: goldfire, simonpj, bgamari

Reviewed By: simonpj

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15330

Differential Revision:

13 months agoBetter Note [The well-kinded type invariant]
Simon Peyton Jones [Wed, 11 Jul 2018 11:05:20 +0000 (12:05 +0100)] 
Better Note [The well-kinded type invariant]

c.f. Trac #14873

13 months agoAdd test for Trac #15352
Simon Peyton Jones [Wed, 11 Jul 2018 11:04:46 +0000 (12:04 +0100)] 
Add test for Trac #15352

13 months agoRemove bad debugging output.
Richard Eisenberg [Wed, 11 Jul 2018 02:00:36 +0000 (22:00 -0400)] 
Remove bad debugging output.

The removed line could cause GHC to hang by printing a
knot-tied type.

13 months agoNote [Ordering of implicit variables]
Richard Eisenberg [Tue, 10 Jul 2018 22:03:09 +0000 (18:03 -0400)] 
Note [Ordering of implicit variables]

This addresses #14808

[ci skip]

13 months agoExpand and implement Note [The tcType invariant]
Richard Eisenberg [Thu, 5 Jul 2018 23:51:59 +0000 (19:51 -0400)] 
Expand and implement Note [The tcType invariant]

Read that note -- it's necessary to make sure that we can
always call typeKind without panicking. As discussed on #14873,
there were more checks and zonking to do, implemented here.
There are no known bugs fixed by this patch, but there are likely
unknown ones.

13 months agoKind-check CUSK associated types separately
Richard Eisenberg [Thu, 5 Jul 2018 19:09:50 +0000 (15:09 -0400)] 
Kind-check CUSK associated types separately

Previously, we kind-checked associated types while while still
figuring out the kind of a CUSK class. This caused trouble, as
documented in Note [Don't process associated types in kcLHsQTyVars]
in TcTyClsDecls. This commit moves this process after the initial
kind of the class is determined.

Fixes #15142.

Test case: indexed-types/should_compile/T15142.hs

13 months agoUnwrap casts before checking vars in eager unifier
Richard Eisenberg [Thu, 5 Jul 2018 18:21:43 +0000 (14:21 -0400)] 
Unwrap casts before checking vars in eager unifier

Previously, checking whether (tv |> co) ~ (tv |> co) got deferred,
because we looked for vars before stripping casts. (The left type
would get stripped, and then tv ~ (tv |> co) would scare the occurs-

This opportunity for improvement presented itself in other work.
This is just an optimization. Some programs can now report more
errors simultaneously.

13 months agoOptional context for a quantified constraint
Simon Peyton Jones [Tue, 10 Jul 2018 11:55:21 +0000 (12:55 +0100)] 
Optional context for a quantified constraint

This is a documentation-only fix, addressing Trac #15354.

13 months agoAdd nakedSubstTy and use it in TcHsType.tcInferApps
Simon Peyton Jones [Mon, 9 Jul 2018 16:29:22 +0000 (17:29 +0100)] 
Add nakedSubstTy and use it in TcHsType.tcInferApps

This was a tricky one.

During type checking we maintain TcType:
   Note [The well-kinded type invariant]
That is, types are well-kinded /without/ zonking.

But in tcInferApps we were destroying that invariant by calling
substTy, which in turn uses smart constructors, which eliminate
apparently-redundant Refl casts.

This is horribly hard to debug beause they really are Refls and
so it "ought" to be OK to discard them. But it isn't, as the
above Note describes in some detail.

Maybe we should review the invariant?  But for now I just followed
it, tricky thought it is.

This popped up because (for some reason) when I fixed Trac #15343,
that exposed this bug by making test polykinds/T14174a fail (in
Trac #14174 which indeed has the same origin).

So this patch fixes a long standing and very subtle bug.

One interesting point: I defined nakedSubstTy in a few lines by
using the generic mapType stuff.  I note that the "normal"
TyCoRep.substTy does /not/ use mapType.  But perhaps it should:
substTy has lots of $! strict applications in it, and they could
all be eliminated just by useing the StrictIdentity monad.  And
that'd make it much easier to experiment with switching between
strict and lazy versions.

13 months agoMore tc-tracing
Simon Peyton Jones [Mon, 9 Jul 2018 16:27:47 +0000 (17:27 +0100)] 
More tc-tracing

And I added some HasDebugCallStack constraints to tcExpectedKind
and related functions too.

13 months agoFix decompsePiCos and visible type application
Simon Peyton Jones [Mon, 9 Jul 2018 16:20:06 +0000 (17:20 +0100)] 
Fix decompsePiCos and visible type application

Trac #15343 was caused by two things

First, in TcHsType.tcHsTypeApp, which deals with the type argment
in visible type application, we were failing to call
solveLocalEqualities. But the type argument is like a user type
signature so it's at least inconsitent not to do so.

I thought that would nail it.  But it didn't. It turned out that we
were ended up calling decomposePiCos on a type looking like this
    (f |> co) Int

where co :: (forall a. ty) ~ (t1 -> t2)

Now, 'co' is insoluble, and we'll report that later.  But meanwhile
we don't want to crash in decomposePiCos.

My fix involves keeping track of the type on both sides of the
coercion, and ensuring that the outer shape matches before
decomposing.  I wish there was a simpler way to do this. But
I think this one is at least robust.

I suppose it is possible that the decomposePiCos fix would
have cured the original report, but I'm leaving the one-line
tcHsTypeApp fix in too because it just seems more consistent.

13 months agoMore refactoring in TcValidity
Simon Peyton Jones [Thu, 5 Jul 2018 16:09:47 +0000 (17:09 +0100)] 
More refactoring in TcValidity

This patch responds to Trac #15334 by making it an error to
write an instance declaration for a tuple constraint like
(Eq [a], Show [a]).

I then discovered that instance validity checking was
scattered betweeen TcInstDcls and TcValidity, so I took
the time to bring it all together, into

In doing so I discovered that there are lot of special
cases.   I have not changed them, but at least they are
all laid out clearly now.

13 months agoRefactor coercion rule
ningning [Tue, 10 Jul 2018 00:02:03 +0000 (20:02 -0400)] 
Refactor coercion rule

The patch is an attempt on #15192.

It defines a new coercion rule

 | GRefl Role Type MCoercion

which correspondes to the typing rule

     t1 : k1
  GRefl r t1 MRefl: t1 ~r t1

     t1 : k1       co :: k1 ~ k2
  GRefl r t1 (MCo co) : t1 ~r t1 |> co

MCoercion wraps a coercion, which might be reflexive (MRefl)
or not (MCo co). To know more about MCoercion see #14975.

We keep Refl ty as a special case for nominal reflexive coercions,
naemly, Refl ty :: ty ~n ty.

This commit is meant to be a general performance improvement,
but there are a few regressions. See #15192, comment:13 for
more information.

Test Plan: ./validate

Reviewers: bgamari, goldfire, simonpj

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15192

Differential Revision:

13 months agoDefine an Outputable MCoercion instance
Ryan Scott [Sun, 8 Jul 2018 16:20:53 +0000 (12:20 -0400)] 
Define an Outputable MCoercion instance

Summary: I needed this when debugging #15346.

Test Plan: Does it compile? It does? Cool.

Reviewers: bgamari, mpickering

Reviewed By: mpickering

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15311

Differential Revision:

13 months agoRevert "rts: Enable two-step allocator on FreeBSD"
Ben Gamari [Fri, 6 Jul 2018 18:12:03 +0000 (14:12 -0400)] 
Revert "rts: Enable two-step allocator on FreeBSD"

This reverts commit 8736715857d08cc1f88d766c257b39c05df20639.

I hadn't intended on merging this.

13 months agorts: Enable two-step allocator on FreeBSD
Ben Gamari [Fri, 6 Jul 2018 15:11:20 +0000 (11:11 -0400)] 
rts: Enable two-step allocator on FreeBSD

Previously we would prevent any operating system not providing the
from using the two-step allocator. Afterall, Linux will reserve
swap-space for
a mapping unless this flag is given, which is most certainly not what
we want.

However, it seems that FreeBSD provides the reservation-only mapping
that we expect despite not providing the MEM_NORESERVE macro. In fact,
provided the macro until 2014, when it was removed on account of not
implemented in the kernel. However, empirical evidence suggests that
just plain
mmap does what we want.

Reviewers: erikd, simonmar

Subscribers: rwbarton, thomie, erikd, carter

GHC Trac Issues: #15348

Differential Revision:

13 months agotestsuite: Add test for #15053
Ben Gamari [Fri, 6 Jul 2018 15:01:38 +0000 (11:01 -0400)] 
testsuite: Add test for #15053

Reviewers: Phyx

Reviewed By: Phyx

Subscribers: Phyx, rwbarton, thomie, carter

GHC Trac Issues: #15053

Differential Revision:

13 months agoFix for built-in Natural literals desugaring
Sylvain Henry [Fri, 6 Jul 2018 15:01:14 +0000 (11:01 -0400)] 
Fix for built-in Natural literals desugaring

The recent patch "Built-in Natural literals in Core"
585ef) introduced a regression when desugaring large numbers.

This patch fixes it and adds a regression test.

Reviewers: hvr, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15301

Differential Revision:

13 months agoSimplify lintIdUnfolding
Matthew Pickering [Fri, 6 Jul 2018 15:00:40 +0000 (11:00 -0400)] 
Simplify lintIdUnfolding

The logic for `DFunUnfolding` seemed quite confusing and unecessary. A
simpler strategy uses `maybeUnfoldingTemplate`, as that is what is
actually used when doing inlining and checking that has the right type.

Reviewers: simonpj, goldfire, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

Differential Revision:

13 months agoAdd a broken test for lingering state from TH unique names #9693
Michael Sloan [Fri, 6 Jul 2018 15:00:10 +0000 (11:00 -0400)] 
Add a broken test for lingering state from TH unique names #9693

The stderr output is

Loading with T9693_initial.hs

    Same exact name in multiple name-spaces:
      type constructor or class ‘X’, declared at: T9693_main.hs:4:1
      data constructor ‘X’, declared at: T9693_main.hs:4:1
      Probable cause: you bound a unique Template Haskell name (NameU),
      perhaps via newName, in different name-spaces.
      If that's it, then -ddump-splices might be useful
Reloading with T9693_modified.hs

    Data constructor ‘X’ used as a type constructor

The strange thing is that the modified version uses (mkName "X"), which should
be fine for simultaneous use in both a data constructor and type constructor.
Indeed, on a fresh load, the modified version works fine. So there is some sort
of state left over from the prior load when (newName "X") was used.

Test Plan: testsuite/tests/th/T9693.script

Reviewers: bgamari, sighingnow, RyanGlScott

Reviewed By: sighingnow, RyanGlScott

Subscribers: RyanGlScott, sighingnow, rwbarton, thomie, carter

Differential Revision:

13 months agoMark AutoDeriveTypeable as deprecated
Krzysztof Gogolewski [Fri, 6 Jul 2018 14:59:43 +0000 (10:59 -0400)] 
Mark AutoDeriveTypeable as deprecated

Test Plan: validate

Reviewers: bgamari, alpmestan

Reviewed By: alpmestan

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15342

Differential Revision:

13 months agousers guide: Mention -fprint-typechecker-elaboration in -ddump-tc docs
Ben Gamari [Fri, 6 Jul 2018 14:58:15 +0000 (10:58 -0400)] 
users guide: Mention -fprint-typechecker-elaboration in -ddump-tc docs

Reviewers: mpickering

Reviewed By: mpickering

Subscribers: mpickering, rwbarton, thomie, carter

Differential Revision:

13 months agocircleci: Detect core count
Ben Gamari [Fri, 6 Jul 2018 14:57:55 +0000 (10:57 -0400)] 
circleci: Detect core count

Test Plan: Try `./validate`, CircleCI build; make sure core count
detection works in both cases.

Reviewers: alpmestan

Reviewed By: alpmestan

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14470

Differential Revision:

13 months agoRemove BUILD_DPH, not used
Krzysztof Gogolewski [Fri, 6 Jul 2018 17:04:30 +0000 (19:04 +0200)] 
Remove BUILD_DPH, not used

13 months agoMake a variant of mkCastErr for kind coercions
Ryan Scott [Fri, 6 Jul 2018 14:53:00 +0000 (10:53 -0400)] 
Make a variant of mkCastErr for kind coercions

I discovered when debugging #15346 that the Core Lint error
message for ill typed casts always mentions types of enclosed
//expressions//, even if the thing being casted is actually a type.
This generalizes `mkCastErr` a bit to allow it to give the proper
labelling for kind coercions.

Test Plan: Run on failing program in #15346, read the Core Lint error

Reviewers: goldfire, bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, thomie, carter

Differential Revision:

13 months agoAccept new stdout for tcrun045
Ryan Scott [Thu, 5 Jul 2018 13:44:18 +0000 (09:44 -0400)] 
Accept new stdout for tcrun045

The stdout produced by test tcrun045 changed in commit
45f44e2c9d5db2f25c52abb402f197c20579400f. The change appears to be
benign, so I've decided to accept it.

13 months agoComment out a pprTrace
Ryan Scott [Thu, 5 Jul 2018 12:54:03 +0000 (08:54 -0400)] 
Comment out a pprTrace

This was introduced in commit
45f44e2c9d5db2f25c52abb402f197c20579400f, but it results in lots of
"check_class ~" messages when validating. I've decided to just
comment it out.

13 months agoMake ppr_tc_args aware of -fprint-explicit-kinds
Ryan Scott [Thu, 5 Jul 2018 12:52:20 +0000 (08:52 -0400)] 
Make ppr_tc_args aware of -fprint-explicit-kinds

`ppr_tc_args` was printing invisible kind arguments even
when `-fprint-explicit-kinds` wasn't enabled. Easily fixed.

Test Plan: make test TEST=T15341

Reviewers: goldfire, bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, thomie, carter

GHC Trac Issues: #15341

Differential Revision:

13 months agoFix #15331 with careful blasts of parenthesizeHsType
Ryan Scott [Thu, 5 Jul 2018 12:51:43 +0000 (08:51 -0400)] 
Fix #15331 with careful blasts of parenthesizeHsType

Another `-ddump-splices` bug that can be solved with more
judicious use of parentheses.

Test Plan: make test TEST=T15331

Reviewers: goldfire, bgamari, alanz, tdammers

Reviewed By: tdammers

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15331

Differential Revision:

13 months agoParenthesize rank-n contexts in Convert
Ryan Scott [Thu, 5 Jul 2018 12:50:56 +0000 (08:50 -0400)] 
Parenthesize rank-n contexts in Convert

Summary: A simple oversight.

Test Plan: make test TEST=T15324

Reviewers: goldfire, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15324

Differential Revision:

13 months agoFix newtype instance GADTs
Ryan Scott [Thu, 5 Jul 2018 12:49:50 +0000 (08:49 -0400)] 
Fix newtype instance GADTs

Summary: This was taken from Richard's branch, which in turn was
submitted to Phab by Matthew, which in turn was commandeered by Ryan.

This fixes an issue with newtype instances in which too many
coercions were being applied in the worker. This fixes the issue by
removing the data family instance axiom from the worker and moving
to the wrapper. Moreover, we now require all newtype instances
to have wrappers, for symmetry with data instances.

Reviewers: goldfire, bgamari, simonpj, mpickering

Reviewed By: mpickering

Subscribers: simonpj, rwbarton, thomie, carter

GHC Trac Issues: #15318

Differential Revision:

13 months agoInstantiate GND bindings with an explicit type signature
Ryan Scott [Thu, 5 Jul 2018 12:30:05 +0000 (08:30 -0400)] 
Instantiate GND bindings with an explicit type signature

Before, we were using visible type application to apply
impredicative types to `coerce` in
`GeneralizedNewtypeDeriving`-generated bindings. This approach breaks
down when combined with `QuantifiedConstraints` in certain ways,
which #14883 and #15290 provide examples of. See
Note [GND and QuantifiedConstraints] for all the gory details.

To avoid this issue, we instead use an explicit type signature to
instantiate each GND binding, and use that to bind any type variables
that might be bound by a class method's type signature. This reduces
the need to impredicative type applications, and more importantly,
makes the programs from #14883 and #15290 work again.

Test Plan: make test TEST="T15290b T15290c T15290d T14883"

Reviewers: simonpj, bgamari

Reviewed By: simonpj

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #14883, #15290

Differential Revision:

13 months agoFix #15308 by suppressing invisble args more rigorously
Ryan Scott [Thu, 5 Jul 2018 12:30:02 +0000 (08:30 -0400)] 
Fix #15308 by suppressing invisble args more rigorously

There was a buglet in `stripInvisArgs` (which is part of the
pretty-printing pipeline for types) in which only invisble arguments
which came before any visible arguments would be suppressed, but any
invisble arguments that came //after// visible ones would still be
printed, even if `-fprint-explicit-kinds`  wasn't enabled.
The fix is simple: make `stripInvisArgs` recursively process the
remaining types even after a visible argument is encountered.

Test Plan: make test TEST=T15308

Reviewers: goldfire, bgamari

Reviewed By: bgamari

Subscribers: simonpj, rwbarton, thomie, carter

GHC Trac Issues: #15308

Differential Revision:

13 months agoFix #15307 by making nlHsFunTy parenthesize more
Ryan Scott [Thu, 5 Jul 2018 12:29:59 +0000 (08:29 -0400)] 
Fix #15307 by making nlHsFunTy parenthesize more

`nlHsFunTy` wasn't parenthesizing its arguments at all,
which led to `-ddump-deriv` producing incorrectly parenthesized
types (since it uses `nlHsFunTy` to construct those types), as
demonstrated in #15307. Fix this by changing `nlHsFunTy` to add
parentheses à la `ppr_ty`: always parenthesizing the argument type
with function precedence, and recursively processing the result type,
adding parentheses for each function type it encounters.

Test Plan: make test TEST=T14578

Reviewers: bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15307

Differential Revision:

13 months agoRefactor validity checking for constraints
Simon Peyton Jones [Wed, 4 Jul 2018 14:17:54 +0000 (15:17 +0100)] 
Refactor validity checking for constraints

There are several changes here.

* TcInteract has gotten too big, so I moved all the class-instance
  matching out of TcInteract into a new module ClsInst. It parallels
  the FamInst module.

  The main export of ClsInst is matchGlobalInst.
  This now works in TcM not TcS.

* A big reason to make matchGlobalInst work in TcM is that we can
  then use it from TcValidity.checkSimplifiableClassConstraint.
  That extends checkSimplifiableClassConstraint to work uniformly
  for built-in instances, which means that we now get a warning
  if we have givens (Typeable x, KnownNat n); see Trac #15322.

* This change also made me refactor LookupInstResult, in particular
  by adding the InstanceWhat field.  I also changed the name of the
  type to ClsInstResult.

  Then instead of matchGlobalInst reporting a staging error (which is
  inappropriate for the call from TcValidity), we can do so in

* In TcValidity, we now check quantified constraints for termination.
  For example, this signature should be rejected:
     f :: (forall a. Eq (m a) => Eq (m a)) => blah
  as discussed in Trac #15316.   The main change here is that
  TcValidity.check_pred_help now uses classifyPredType, and has a
  case for ForAllPred which it didn't before.

  This had knock-on refactoring effects in TcValidity.

13 months agoFix comment
Simon Peyton Jones [Tue, 3 Jul 2018 07:51:21 +0000 (08:51 +0100)] 
Fix comment

13 months agoAdd comments on Typeable (n :: Nat)
Simon Peyton Jones [Tue, 3 Jul 2018 07:50:19 +0000 (08:50 +0100)] 
Add comments on Typeable (n :: Nat)

See Note [Typeable for Nat and Symbol] in TcInteract,
which I added after discussion on Trac #15322

13 months agoRevert "Don't lock the MVar closure on tryReadMVar"
Ömer Sinan Ağacan [Wed, 4 Jul 2018 14:05:56 +0000 (17:05 +0300)] 
Revert "Don't lock the MVar closure on tryReadMVar"

This reverts commit 6bb0c5db818c1ba9cd5fe1785a3020cfddf0c223.

See discussion in D4905.

13 months agoAdd regression test for #15007
Ömer Sinan Ağacan [Wed, 4 Jul 2018 13:49:19 +0000 (16:49 +0300)] 
Add regression test for #15007

13 months agoAdd regression test for #15321
Ömer Sinan Ağacan [Wed, 4 Jul 2018 13:43:13 +0000 (16:43 +0300)] 
Add regression test for #15321

13 months agoFix errors caused by invalid candidates leaking from hole fits
Matthías Páll Gissurarson [Wed, 4 Jul 2018 11:54:54 +0000 (14:54 +0300)] 
Fix errors caused by invalid candidates leaking from hole fits

This is a one line fix (and a note) that fixes four tickets, #15007,
 #15321 and #15202, #15314

The issue was that errors caused by illegal candidates (according to GHC
stage or being internal names) were leaking to the user, causing
bewildering error messages. If a candidate causes the type checker to
error, it is not a valid hole fit, and should be discarded.

As mentioned in #15321, this can cause a pattern of omissions, which
might be hard to discover. A better approach would be to gather the
error messages, and ask users to report them as GHC bugs. This will be
implemented in a subsequent change.

Reviewers: bgamari, simonpj

Reviewed By: simonpj

Subscribers: simonpj, rwbarton, thomie, carter

GHC Trac Issues: #15007, #15321, #15202, #15314

Differential Revision:

13 months agoFix nptr field alignment in RtClosureInspect
Ömer Sinan Ağacan [Wed, 4 Jul 2018 06:12:01 +0000 (09:12 +0300)] 
Fix nptr field alignment in RtClosureInspect

`extractSubTerms` (which is extracting pointer and non-pointer fields of a
closure) was computing the alignment incorrectly when aligning a 64-bit value
(e.g. a Double) on i386 by aligning it to 64-bits instead of to word size
(32-bits). This is documented in `mkVirtHeapOffsetsWithPadding`:

> Align the start offset (eg, 2-byte value should be 2-byte aligned).
> But not more than to a word.

Fixes #15061

Test Plan:
Validated on both 32-bit and 64-bit. 32-bit fails with various unrelated stat
failures, but no actual test failures.

Reviewers: hvr, bgamari

Reviewed By: bgamari

Subscribers: simonpj, rwbarton, thomie, carter

GHC Trac Issues: #15061

Differential Revision:

13 months agoRtClosureInspect: add some docs, remove unused stuff
Ömer Sinan Ağacan [Wed, 4 Jul 2018 06:08:16 +0000 (09:08 +0300)] 
RtClosureInspect: add some docs, remove unused stuff

Details are not documented, only the high-level functions

Reviewers: simonpj, hvr, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

Differential Revision:

13 months agotestsuite: remove unused scc001 target
Ömer Sinan Ağacan [Sun, 1 Jul 2018 11:31:27 +0000 (14:31 +0300)] 
testsuite: remove unused scc001 target

13 months agoFix mkGadtDecl does not set con_forall correctly
Alan Zimmerman [Fri, 29 Jun 2018 18:58:21 +0000 (20:58 +0200)] 
Fix mkGadtDecl does not set con_forall correctly

A GADT declaration surrounded in parens does not det the con_forall
field correctly.


data MaybeDefault v where
    TestParens  :: (forall v . (Eq v) => MaybeDefault v)

Closes #15323

13 months agoDon't lock the MVar closure on tryReadMVar
David Feuer [Fri, 29 Jun 2018 18:31:33 +0000 (14:31 -0400)] 
Don't lock the MVar closure on tryReadMVar

It shouldn't be necessary to lock the `MVar` closure on `tryReadMVar`, since it
just reads one field of the structure and doesn't make any modifications. So
let's not.

Reviewers: bgamari, erikd, simonmar, fryguybob, osa1

Reviewed By: osa1

Subscribers: osa1, rwbarton, thomie, carter

Differential Revision:

13 months agoA few typofixes in comments
Gabor Greif [Fri, 29 Jun 2018 12:50:12 +0000 (14:50 +0200)] 
A few typofixes in comments

13 months agoAdd -ddump-rtti to user's guide and man page
Ömer Sinan Ağacan [Fri, 29 Jun 2018 06:46:24 +0000 (09:46 +0300)] 
Add -ddump-rtti to user's guide and man page

Reviewers: bgamari

Subscribers: rwbarton, thomie, carter

Differential Revision:

13 months agoDocument SRT scavenging behavior of scavenge_block() and scavenge_one()
Ömer Sinan Ağacan [Thu, 28 Jun 2018 05:44:15 +0000 (08:44 +0300)] 
Document SRT scavenging behavior of scavenge_block() and scavenge_one()

Reviewers: simonmar, bgamari, erikd

Reviewed By: simonmar

Subscribers: rwbarton, thomie, carter

Differential Revision:

13 months agoClarify role of coercion in flattening function
Richard Eisenberg [Thu, 28 Jun 2018 04:08:58 +0000 (00:08 -0400)] 
Clarify role of coercion in flattening function

Comments only: [ci skip]

13 months agoAdd ghc-prim as dependency to ghc-bin
Ömer Sinan Ağacan [Wed, 27 Jun 2018 10:04:47 +0000 (13:04 +0300)] 
Add ghc-prim as dependency to ghc-bin

Remove unsafeCoerce introduced by a54c94f08b

Reviewers: simonmar, bgamari

Reviewed By: simonmar

Subscribers: rwbarton, thomie, carter

Differential Revision:

13 months agoShow addresses of live objects in GHCi leak check
Ömer Sinan Ağacan [Wed, 27 Jun 2018 07:32:31 +0000 (10:32 +0300)] 
Show addresses of live objects in GHCi leak check

Reviewers: simonmar, bgamari

Subscribers: rwbarton, thomie, carter

Differential Revision:

13 months agorts: Update some comments, minor refactoring
Ömer Sinan Ağacan [Wed, 27 Jun 2018 07:31:29 +0000 (10:31 +0300)] 
rts: Update some comments, minor refactoring

13 months agoAdd commnent about binder order
Simon Peyton Jones [Tue, 26 Jun 2018 14:44:12 +0000 (15:44 +0100)] 
Add commnent about binder order

...provoked by Trac #15308

13 months agoTypo fix in rts [skip ci]
Ömer Sinan Ağacan [Tue, 26 Jun 2018 14:13:17 +0000 (17:13 +0300)] 
Typo fix in rts [skip ci]

13 months agoTypofixes in comments and whitespace only [ci skip]
Gabor Greif [Tue, 26 Jun 2018 13:29:14 +0000 (15:29 +0200)] 
Typofixes in comments and whitespace only [ci skip]

13 months agoRemove dead code
Simon Peyton Jones [Tue, 26 Jun 2018 11:07:27 +0000 (12:07 +0100)] 
Remove dead code