[have traverse add names in scope to bound names and add current let and case bindings to used names
John Meacham <john@repetae.net>**20051011023032] hunk ./E/Traverse.hs 39
-runRename set e = runIdentity $ traverse travOptions { pruneUnreachable = Nothing } (\_ (x,xs) -> (return $ foldl EAp x xs)) mempty (Map.fromList [ (v,NotKnown) | v <- Set.toAscList set])  e
+runRename set e = runIdentity $ traverse travOptions { pruneUnreachable = Nothing } (\_ (x,xs) -> (return $ foldl EAp x xs)) mempty (Map.fromAscList [ (v,NotKnown) | v <- Set.toAscList set])  e
hunk ./E/Traverse.hs 117
-        addNames $ freeVars e
-        addNames (Map.keys subst)
-        addNames (Map.keys smap)
+        addBoundNames $ freeVars e
+        addBoundNames (Map.keys subst)
+        addBoundNames (Map.keys smap)
hunk ./E/Traverse.hs 154
-    g (ECase e b as d) = do
+    g ec@(ECase e b as d) = do
hunk ./E/Traverse.hs 156
+        addNames $ map tvrIdent (caseBinds ec)
hunk ./E/Traverse.hs 159
-            as' <- mapM (da [ v  | EVar v <- [e',EVar b']] [ v  | EVar v <- [e,EVar b]])   as
+            as' <- mapM (da [ v  | EVar v <- [e',EVar b']])   as
hunk ./E/Traverse.hs 164
-    g (ELetRec ds e) = z (basicDecompose  (pruneUnreachable tOpt) (trav_rules tOpt) e ds) e  where
+    g (ELetRec ds e) = do
+            addNames $ map ( tvrIdent . fst ) ds
+            z (basicDecompose  (pruneUnreachable tOpt) (trav_rules tOpt) e ds) e  where
hunk ./E/Traverse.hs 204
-    da vs _ (Alt p@(LitCons n xs t) l) = do
+    da vs (Alt p@(LitCons n xs t) l) = do
hunk ./E/Traverse.hs 211
-    da vs _ (Alt p l) = do
+    da vs (Alt p@LitInt {} l) = do