Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch :
http://hackage.haskell.org/trac/ghc/changeset/6c4c33fc9cc4d9a4727a63f3a9681f7200354750 >--------------------------------------------------------------- commit 6c4c33fc9cc4d9a4727a63f3a9681f7200354750 Author: [email protected] <unknown> Date: Thu Feb 17 17:58:40 2011 +0000 Comments only >--------------------------------------------------------------- compiler/typecheck/TcCanonical.lhs | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/compiler/typecheck/TcCanonical.lhs b/compiler/typecheck/TcCanonical.lhs index 8668d90..1974143 100644 --- a/compiler/typecheck/TcCanonical.lhs +++ b/compiler/typecheck/TcCanonical.lhs @@ -1001,6 +1001,22 @@ itself, and so on. %* * %************************************************************************ +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!). + \begin{code} rewriteWithFunDeps :: [Equation] -> [Xi] -> CtFlavor _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
