Expand type synonyms when Linting a forall
authorSimon Peyton Jones <simonpj@microsoft.com>
Fri, 1 Jun 2018 15:36:57 +0000 (16:36 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Mon, 4 Jun 2018 09:35:34 +0000 (10:35 +0100)
commit9d600ea68c283b0d38ac663c3cc48baba6b94f57
tree5b03fafa7ebadc432833376dcd293f56b56e5989
parent0e5d2b7442ff9e55837913a53da451fb97417496
Expand type synonyms when Linting a forall

Trac #14939 showed a type like
   type Alg cls ob = ob
   f :: forall (cls :: * -> Constraint) (b :: Alg cls *). b

where the kind of the forall looks like (Alg cls *), with a
free cls. This tripped up Core Lint.

I fixed this by making Core Lint a bit more forgiving, expanding
type synonyms if necessary.

I'm worried that this might not be the whole story; notably
typeKind looks suspect.  But it certainly fixes this problem.
compiler/coreSyn/CoreLint.hs
compiler/types/Type.hs
testsuite/tests/polykinds/T14939.hs [new file with mode: 0644]
testsuite/tests/polykinds/all.T