A little refactoring (remove redundant argument passed to isGoodRecEv)
authorsimonpj@microsoft.com <unknown>
Thu, 2 Dec 2010 12:31:10 +0000 (12:31 +0000)
committersimonpj@microsoft.com <unknown>
Thu, 2 Dec 2010 12:31:10 +0000 (12:31 +0000)
compiler/typecheck/TcInteract.lhs
compiler/typecheck/TcSMonad.lhs

index c04fd0f..b49ec65 100644 (file)
@@ -840,9 +840,9 @@ interactWithInert fdimprs inert workitem
         -- We don't have to do this for givens, as we fully know the evidence for them.
         ; rec_ev_ok <- 
             case (cc_flavor inert, cc_flavor workitem) of 
-              (Wanted loc, Derived {}) -> isGoodRecEv work_ev  (WantedEvVar inert_ev loc)
-              (Derived {}, Wanted loc) -> isGoodRecEv inert_ev (WantedEvVar work_ev loc)
-              _                        -> return True 
+              (Wanted {}, Derived {}) -> isGoodRecEv work_ev  inert_ev
+              (Derived {}, Wanted {}) -> isGoodRecEv inert_ev work_ev
+              _                       -> return True
 
         ; if is_allowed && rec_ev_ok then 
               doInteractWithInert fdimprs inert workitem 
index d688af9..a45f9a5 100644 (file)
@@ -861,7 +861,7 @@ newDictVar cl tys = wrapTcS $ TcM.newDict cl tys
 
 
 \begin{code} 
-isGoodRecEv :: EvVar -> WantedEvVar -> TcS Bool 
+isGoodRecEv :: EvVar -> EvVar -> TcS Bool
 -- In a call (isGoodRecEv ev wv), we are considering solving wv 
 -- using some term that involves ev, such as:
 -- by setting          wv = ev
@@ -876,7 +876,7 @@ isGoodRecEv :: EvVar -> WantedEvVar -> TcS Bool
 -- call (constructor) and -1 for every superclass selection (destructor).
 --
 -- See Note [Superclasses and recursive dictionaries] in TcInteract
-isGoodRecEv ev_var (WantedEvVar wv _)
+isGoodRecEv ev_var wv
   = do { tc_evbinds <- getTcEvBindsBag 
        ; mb <- chase_ev_var tc_evbinds wv 0 [] ev_var 
        ; return $ case mb of 
@@ -896,16 +896,7 @@ isGoodRecEv ev_var (WantedEvVar wv _)
             | Just (EvBind _ ev_trm) <- lookupEvBind assocs orig
             = chase_ev assocs trg curr_grav (orig:visited) ev_trm
 
-{-  No longer needed: evidence is in the EvBinds
-            | isTcTyVar orig && isMetaTyVar orig 
-            = do { meta_details <- wrapTcS $ TcM.readWantedCoVar orig
-                 ; case meta_details of 
-                     Flexi -> return Nothing 
-                     Indirect tyco -> chase_ev assocs trg curr_grav 
-                                             (orig:visited) (EvCoercion tyco)
-                           }
--}
-            | otherwise = return Nothing 
+            | otherwise = return Nothing
 
         chase_ev assocs trg curr_grav visited (EvId v) 
             = chase_ev_var assocs trg curr_grav visited v