[project @ 2004-03-11 14:34:22 by simonpj]
authorsimonpj <unknown>
Thu, 11 Mar 2004 14:34:24 +0000 (14:34 +0000)
committersimonpj <unknown>
Thu, 11 Mar 2004 14:34:24 +0000 (14:34 +0000)
commit9ec3012e2fd5b998e32897c03551574038fd59a8
tree9675cfd56543c4dcd51a6b84b04243134b889b31
parent1796a476986f14cca2f7628d2f7cf6d530853495
[project @ 2004-03-11 14:34:22 by simonpj]
Fix a nasty and long-standing bug in the handling of functional dependencies.

The story is told in comments with TcSimplify.tcSimplifyRestricted.  We were
simpifying a group of constraints *twice*: once to establish the type vars to
quantify over, and once "for real" but less brutally.  Unfortunately, the
less-brutally part meant that we did less improvement, which in turn meant
that an invariant (no captured constraints) was violated.  Consequential
bizarre results.

The test is typecheck/should_compile/tc177
ghc/compiler/typecheck/Inst.lhs
ghc/compiler/typecheck/TcEnv.lhs
ghc/compiler/typecheck/TcExpr.lhs
ghc/compiler/typecheck/TcSimplify.lhs