Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/7f0e52eba0bda007baff9b5184b52dd7315f56bd

>---------------------------------------------------------------

commit 7f0e52eba0bda007baff9b5184b52dd7315f56bd
Author: Andres Loeh <[email protected]>
Date:   Tue Jun 21 14:06:18 2011 +0000

    make conflict sets slightly larger
    
    This is slower, however seems more correct. Larger conflict sets
    typically mean fewer possibilities to cut the search space. On the
    other hand, cutting too much risks incompleteness. At some later
    stage, we might want to try hard to think about how/if conflict sets
    could be reduced in size.

>---------------------------------------------------------------

 .../Client/Dependency/Modular/Validate.hs          |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/cabal-install/Distribution/Client/Dependency/Modular/Validate.hs 
b/cabal-install/Distribution/Client/Dependency/Modular/Validate.hs
index 3af9869..3f8b952 100644
--- a/cabal-install/Distribution/Client/Dependency/Modular/Validate.hs
+++ b/cabal-install/Distribution/Client/Dependency/Modular/Validate.hs
@@ -86,8 +86,8 @@ validate = cata go
   where
     go :: TreeF (GoalReasons, Scope) (Validate (Tree GoalReasons)) -> Validate 
(Tree GoalReasons)
 
-    go (PChoiceF qpn (gr,  sc)   ts) = PChoice qpn gr   <$> sequence 
(P.mapWithKey (goP qpn sc) ts)
-    go (FChoiceF qfn (gr, _sc) b ts) = FChoice qfn gr b <$> sequence 
(P.mapWithKey (goF qfn gr) ts)
+    go (PChoiceF qpn (gr,  sc)   ts) = PChoice qpn gr   <$> sequence 
(P.mapWithKey (goP qpn gr sc) ts)
+    go (FChoiceF qfn (gr, _sc) b ts) = FChoice qfn gr b <$> sequence 
(P.mapWithKey (goF qfn gr   ) ts)
 
     -- We don't need to do anything for goal choices or failure nodes.
     go (GoalChoiceF              ts) = GoalChoice       <$> sequence ts
@@ -95,8 +95,8 @@ validate = cata go
     go (FailF    c fr              ) = pure (Fail c fr)
 
     -- What to do for package nodes ...
-    goP :: QPN -> Scope -> I -> Validate (Tree GoalReasons) -> Validate (Tree 
GoalReasons)
-    goP qpn@(Q _pp pn) sc i r = do
+    goP :: QPN -> GoalReasons -> Scope -> I -> Validate (Tree GoalReasons) -> 
Validate (Tree GoalReasons)
+    goP qpn@(Q _pp pn) gr sc i r = do
       PA ppa pfa <- asks pa    -- obtain current preassignment
       idx        <- asks index -- obtain the index
       svd        <- asks saved -- obtain saved dependencies
@@ -111,7 +111,7 @@ validate = cata go
       let nsvd = M.insert qpn qdeps svd
       case mnppa of
         Left (c, d) -> -- We have an inconsistency. We can stop.
-                       return (Fail c (Conflicting d))
+                       return (Fail (c `S.union` goalReasonsToVars gr) 
(Conflicting d))
         Right nppa  -> -- We have an updated partial assignment for the 
recursive validation.
                        local (\ s -> s { pa = PA nppa pfa, saved = nsvd }) r
 



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to