Allow TyVars in TcTypes
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 23 Nov 2016 16:00:00 +0000 (16:00 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Fri, 25 Nov 2016 11:18:54 +0000 (11:18 +0000)
commit18d0bdd3848201882bae167e3b15fd797d217e93
tree64a070080d0bf8025d59f8f9c94386ef4970e0ba
parent1eec1f21268af907f59b5d5c071a9a25de7369c7
Allow TyVars in TcTypes

Up to now we've had a rule that a TyVar can't apppear in a type
seen by the type checker; they should all be TcTyVars.  But:

a) With -XTypeInType it becomes much harder to exclude them;
   see Note [TcTyVars in the typechecker] in TcType.

b) It's unnecessary to exculde them; instead we can just treat
   a TyVar just like vanillaSkolemTv.

This is what was causing an ASSERT error in
indexed-types/should_fail/T12041, reported in Trac #12826.

That patch allows a TyVar in a TcType.  The most significant
change is to make Var.tcTyVarDetails return vanillaSkolemTv.
In fact it already did, but (a) it was not documented, and
(b) we never exploited it.  Now we rely on it.
compiler/basicTypes/Var.hs
compiler/typecheck/TcErrors.hs
compiler/typecheck/TcType.hs
compiler/typecheck/TcUnify.hs
compiler/types/InstEnv.hs
testsuite/tests/indexed-types/should_fail/all.T