[when choosing jumppoint names in Grin.Simplify, be sure to not shadow any names in scope
John Meacham <john@repetae.net>**20061012002757] hunk ./Grin/Simplify.hs 29
+import Util.SetLike
hunk ./Grin/Simplify.hs 251
-    f lf (App a _ _) | a `Set.member` lf = return []
+    f lf (App a _ _) | a `member` lf = return []
hunk ./Grin/Simplify.hs 281
-    f lf e@(App a as t) | a `Set.member` lf = App a as nty
+    f lf e@(App a as t) | a `member` lf = App a as nty
hunk ./Grin/Simplify.hs 503
-        mtick $ "Optimize.optimize.case-hoist-jumppoint" -- .{" ++ show (Prelude.map (isManifestNode . lamExp) as :: [Maybe [Atom]])
-        uniq <- newUniq
-        let fname = toAtom $ "fjumppoint-" ++ show n ++ "-" ++ show uniq
-            f e@(Return NodeC {}) = e :>>= v :-> Case v as'
+        let ufuncs = freeVars fbody
+            fbody = Tup [v] :-> Case v as'
+            cfname = do
+                uniq <- newUniq
+                let fname = toAtom $ "fjumppoint-" ++ show n ++ "-" ++ show uniq
+                if fname `member` (ufuncs :: Set.Set Atom) then cfname else return fname
+        fname <- cfname
+        let f e@(Return NodeC {}) = e :>>= v :-> Case v as'
hunk ./Grin/Simplify.hs 514
-            fbody = Tup [v] :-> Case v as'
+        mtick $ "Optimize.optimize.case-hoist-jumppoint.{" ++ show fname -- .{" ++ show (Prelude.map (isManifestNode . lamExp) as :: [Maybe [Atom]])