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

On branch  : 

http://hackage.haskell.org/trac/ghc/changeset/80d2669b044146cb730e0f57566a01f2e6960170

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

commit 80d2669b044146cb730e0f57566a01f2e6960170
Author: Max Bolingbroke <batterseapo...@hotmail.com>
Date:   Tue Aug 2 15:25:02 2011 +0100

    Whitespace sanity in zipBracketeds

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

 compiler/supercompile/Supercompile/Drive/Split.hs |   24 ++++++++++++++++----
 1 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/compiler/supercompile/Supercompile/Drive/Split.hs 
b/compiler/supercompile/Supercompile/Drive/Split.hs
index f350157..b310db6 100644
--- a/compiler/supercompile/Supercompile/Drive/Split.hs
+++ b/compiler/supercompile/Supercompile/Drive/Split.hs
@@ -372,15 +372,29 @@ zipBracketeds :: Bracketed (Bracketed a)
                -> Bracketed a
 zipBracketeds (TailsUnknown bshell bholes) = TailsUnknown (Shell shell_fvs 
(\es -> shell_wrapper es [])) holes
   where (shell_fvs, shell_wrapper, holes) = foldr go (shellExtraFvs bshell, 
\[] es' -> shellWrapper bshell es', []) bholes
-        go (Hole bvs bracketed) (shell_extra_fvs, shell_wrapper, holes) = 
(shell_extra_fvs `unionVarSet` nonRecBindersFreeVars bvs (bracketedExtraFvs 
rbracketed), \es es' -> case splitBy (bracketedHoles rbracketed) es of 
(es_here, es_later) -> shell_wrapper es_later (shellWrapper (bracketedShell 
rbracketed) es_here:es'), holes ++ bracketedHoles rbracketed)
+        go (Hole bvs bracketed) (shell_extra_fvs, shell_wrapper, holes)
+          = (shell_extra_fvs `unionVarSet` nonRecBindersFreeVars bvs 
(bracketedExtraFvs rbracketed),
+             \es es' -> case splitBy (bracketedHoles rbracketed) es of
+                          (es_here, es_later) -> shell_wrapper es_later 
(shellWrapper (bracketedShell rbracketed) es_here:es'),
+             holes ++ bracketedHoles rbracketed)
           where rbracketed = rigidizeBracketed bracketed
-zipBracketeds (TailsKnown bty mk_bshell bholes) = case ei_holes of Left holes  
-> TailsUnknown (Shell (mk_shell_fvs bty) (\es -> mk_shell_wrapper bty es [])) 
holes
-                                                                   Right holes 
-> TailsKnown bty (\ty -> Shell (mk_shell_fvs ty) (\es -> mk_shell_wrapper ty 
es [])) holes
+zipBracketeds (TailsKnown bty mk_bshell bholes) = case ei_holes of
+    Left holes  -> TailsUnknown          (Shell (mk_shell_fvs bty) (\es -> 
mk_shell_wrapper bty es [])) holes
+    Right holes -> TailsKnown bty (\ty -> Shell (mk_shell_fvs ty)  (\es -> 
mk_shell_wrapper ty  es [])) holes
   where (mk_shell_fvs, mk_shell_wrapper, ei_holes) = foldr go (\ty -> 
shellExtraFvs (mk_bshell ty), \ty [] es' -> shellWrapper (mk_bshell ty) es', 
Right []) bholes
         go (TailishHole is_tail (Hole bvs bracketed)) (shell_extra_fvs, 
shell_wrapper, ei_holes) = case bracketed of
           TailsKnown _ty mk_shell holes
-            | is_tail, Right old_holes <- ei_holes -> (\ty -> shell_extra_fvs 
ty `unionVarSet` nonRecBindersFreeVars bvs (shellExtraFvs (mk_shell ty)), \ty 
es es' -> case splitBy holes es of (es_here, es_later) -> shell_wrapper ty 
es_later (shellWrapper (mk_shell ty) es_here:es'), Right (old_holes ++ holes))
-          _                                        -> (\ty -> shell_extra_fvs 
ty `unionVarSet` nonRecBindersFreeVars bvs (bracketedExtraFvs rbracketed), \ty 
es es' -> case splitBy (bracketedHoles rbracketed) es of (es_here, es_later) -> 
shell_wrapper ty es_later (shellWrapper (bracketedShell rbracketed) 
es_here:es'), case ei_holes of Left old_holes -> Left (old_holes ++ 
bracketedHoles rbracketed); Right old_holes -> if is_tail then Left (map 
tailishHole old_holes ++ bracketedHoles rbracketed) else Right (old_holes ++ 
map (TailishHole False) (bracketedHoles rbracketed)))
+            | is_tail, Right old_holes <- ei_holes
+            -> (\ty -> shell_extra_fvs ty `unionVarSet` nonRecBindersFreeVars 
bvs (shellExtraFvs (mk_shell ty)),
+                \ty es es' -> case splitBy holes es of
+                                (es_here, es_later) -> shell_wrapper ty 
es_later (shellWrapper (mk_shell ty) es_here:es'),
+                Right (old_holes ++ holes))
+          _ -> (\ty -> shell_extra_fvs ty `unionVarSet` nonRecBindersFreeVars 
bvs (bracketedExtraFvs rbracketed),
+                \ty es es' -> case splitBy (bracketedHoles rbracketed) es of
+                                (es_here, es_later) -> shell_wrapper ty 
es_later (shellWrapper (bracketedShell rbracketed) es_here:es'),
+                case ei_holes of Left old_holes -> Left (old_holes ++ 
bracketedHoles rbracketed)
+                                 Right old_holes | is_tail   -> Left (map 
tailishHole old_holes ++ bracketedHoles rbracketed)
+                                                 | otherwise -> Right 
(old_holes ++ map (TailishHole False) (bracketedHoles rbracketed)))
             where rbracketed = rigidizeBracketed bracketed
 
 modifyTails :: forall a b. (Type -> Type) -> ([a] -> (b, [a])) -> Bracketed a 
-> Maybe (b, Bracketed a)



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

Reply via email to