Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch :
http://hackage.haskell.org/trac/ghc/changeset/50d0293555691012f96259de7f8682b94db58517 >--------------------------------------------------------------- commit 50d0293555691012f96259de7f8682b94db58517 Author: [email protected] <unknown> Date: Thu Feb 17 14:09:21 2011 +0000 Use "on the spot" solving for fundeps When we spot an equality arising from a functional dependency, we now use that equality (a "wanted") to rewrite the work-item constraint right away. This avoids two dangers Danger 1: If we send the original constraint on down the pipeline it may react with an instance declaration, and in delicate situations (when a Given overlaps with an instance) that may produce new insoluble goals: see Trac #4952 Danger 2: If we don't rewrite the constraint, it may re-react with the same thing later, and produce the same equality again --> termination worries. To achieve this required some refactoring of FunDeps.lhs (nicer now!). This patch also contains a couple of unrelated improvements * A bad bug in TcSMonad.nestImplicTcS whereby the Tcs tyvars of an outer implication were not untouchable inside * Improved logging machinery for the type constraint solver; use -ddump-cs-trace (probably with a wider default line width -dppr-cols=200 or something) compiler/main/DynFlags.hs | 2 + compiler/typecheck/TcCanonical.lhs | 79 ++++++++- compiler/typecheck/TcInteract.lhs | 335 +++++++++++++++++++++--------------- compiler/typecheck/TcRnTypes.lhs | 7 +- compiler/typecheck/TcSMonad.lhs | 114 +++++-------- compiler/types/FunDeps.lhs | 293 +++++++++++++++++++------------- 6 files changed, 501 insertions(+), 329 deletions(-) Diff suppressed because of size. To see it, use: git show 50d0293555691012f96259de7f8682b94db58517 _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
