[commit: ghc] : Comments only (6c4c33f)
Simon Marlow
marlowsd at gmail.com
Wed Mar 2 16:46:58 CET 2011
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch :
http://hackage.haskell.org/trac/ghc/changeset/6c4c33fc9cc4d9a4727a63f3a9681f7200354750
>---------------------------------------------------------------
commit 6c4c33fc9cc4d9a4727a63f3a9681f7200354750
Author: simonpj at microsoft.com <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
More information about the Cvs-ghc
mailing list