[project @ 2005-03-01 21:40:40 by simonpj]
authorsimonpj <unknown>
Tue, 1 Mar 2005 21:40:54 +0000 (21:40 +0000)
committersimonpj <unknown>
Tue, 1 Mar 2005 21:40:54 +0000 (21:40 +0000)
commitff818166a0a06e77becad9e28ed116f3b7f5cc8b
tree42960bfa413f0e43a157f66b95fa6f9e4709d81c
parent70768203297a567581aaa764086cbcda4b8f09ca
[project @ 2005-03-01 21:40:40 by simonpj]
Type signatures and skolem constants (again)
Merge to STABLE

This commit lays to rest the vexed question of skolem constants
and type signatures.  My fix last week made type-signature variables
into ordinary meta type variables, because they can be unified
together (see Note [Signature skolems] in TcType).  But that was wrong
becuase GADTs will only refine skolems.

So this commit extends TcTyVarDetails with a new constructors, SigSkolTv,
which is a skolem (like SkolemTv) but is unifiable (like MetaTv).  It's
a bit of a hack, but the code came out quite nicely.

Now the GADT tests work.
ghc/compiler/typecheck/TcBinds.lhs
ghc/compiler/typecheck/TcMType.lhs
ghc/compiler/typecheck/TcPat.lhs
ghc/compiler/typecheck/TcRnTypes.lhs
ghc/compiler/typecheck/TcType.lhs
ghc/compiler/typecheck/TcUnify.lhs