Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : supercompiler

http://hackage.haskell.org/trac/ghc/changeset/e2b3fa1166ce440d426e7ebc6180df3a2bb30bdf

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

commit e2b3fa1166ce440d426e7ebc6180df3a2bb30bdf
Author: Max Bolingbroke <batterseapo...@hotmail.com>
Date:   Wed Jul 27 18:34:37 2011 +0100

    Rename free variables in annotation correctly in termToAnswer

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

 .../supercompile/Supercompile/Evaluator/Syntax.hs  |   12 +++++-------
 1 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/compiler/supercompile/Supercompile/Evaluator/Syntax.hs 
b/compiler/supercompile/Supercompile/Evaluator/Syntax.hs
index 466e7a0..515e8ca 100644
--- a/compiler/supercompile/Supercompile/Evaluator/Syntax.hs
+++ b/compiler/supercompile/Supercompile/Evaluator/Syntax.hs
@@ -42,6 +42,10 @@ annedFreeVars = freeVars . sizee . unComp . tagee . unComp
 annedTag :: Anned a -> Tag
 annedTag = tag . unComp
 
+renameAnned :: In (Anned a) -> Anned (In a)
+renameAnned (rn, Comp (Tagged tg (Comp (Sized sz (FVed fvs x)))))
+  = Comp (Tagged tg (Comp (Sized sz (FVed (renameFreeVars rn fvs) (rn, x)))))
+
 
 annedVarFreeVars' = taggedSizedFVedVarFreeVars'
 annedTermFreeVars = taggedSizedFVedTermFreeVars
@@ -95,7 +99,7 @@ answerFreeVars' :: Answer -> FreeVars
 answerFreeVars' = annedTermFreeVars' . answerToAnnedTerm' emptyInScopeSet
 
 termToAnswer :: InScopeSet -> In AnnedTerm -> Maybe (Anned Answer)
-termToAnswer iss (rn, anned_e) = flip traverse anned_e $ \e -> case e of
+termToAnswer iss in_anned_e = flip traverse (renameAnned in_anned_e) $ \(rn, 
e) -> case e of
     Value v          -> Just (Nothing, (rn, v))
     Cast anned_e' co -> case extract anned_e' of
         Value v -> Just (Just (renameCoercion iss rn co, annedTag anned_e'), 
(rn, v))
@@ -217,12 +221,6 @@ instance Outputable StackFrame where
         CastIt co'                     -> pPrintPrecCast prec (PrettyDoc $ 
text "[_]") co'
 
 
-renameAnned :: (InScopeSet -> Renaming -> a -> a)
-            -> Anned (In a) -> a
-renameAnned rename in_x = x'
-  where (rn, x) = annee in_x
-        x' = rename (mkInScopeSet (annedFreeVars in_x)) rn x
-
 stateType :: State -> Type
 stateType (_, _, k, qa) = stackType k (qaType qa)
 



_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to