[remove duplicate top level code in renamer
John Meacham <john@repetae.net>**20080218141430] hunk ./FrontEnd/Rename.hs 58
+    envNameSpace :: [NameType],
hunk ./FrontEnd/Rename.hs 86
-
-
hunk ./FrontEnd/Rename.hs 93
------------------------------------------------------------
--- The renaming code:
---
-
-
-addTopLevels ::  [HsDecl]  -> RM ()
-addTopLevels  []  = return ()
-addTopLevels  hsDecls = do
+addTopLevels ::  [HsDecl]  -> RM a -> RM a
+addTopLevels  hsDecls action = do
hunk ./FrontEnd/Rename.hs 109
-    return ()
+    action
hunk ./FrontEnd/Rename.hs 114
--- | Main entry point.
-
-{-# NOINLINE renameModule #-}
-renameModule :: MonadWarn m => FieldMap -> [(Name,[Name])] -> HsModule -> m HsModule
-renameModule fls ns m = mapM_ addWarning errors >> return renamedMod where
+runRename :: MonadWarn m => (a -> RM a) -> Module -> FieldMap -> [(Name,[Name])] -> a -> m a
+runRename doit mod fls ns m = mapM_ addWarning errors >> return renamedMod where
hunk ./FrontEnd/Rename.hs 133
-
hunk ./FrontEnd/Rename.hs 135
-        envModule = hsModuleName m,
+        envNameSpace = [Val,DataConstructor],
+        envModule = mod,
hunk ./FrontEnd/Rename.hs 140
+    (renamedMod, _, errors) = runRWS (unRM $ doit m) startEnv startState
+
+{-# NOINLINE renameModule #-}
+renameModule :: MonadWarn m => FieldMap -> [(Name,[Name])] -> HsModule -> m HsModule
+renameModule fls ns m = runRename renameDecls (hsModuleName m) fls ns m
hunk ./FrontEnd/Rename.hs 146
-    (renamedMod, _, errors) = runRWS (unRM $ renameDecls m) startEnv startState
+{-# NOINLINE renameStatement #-}
+renameStatement :: MonadWarn m => FieldMap -> [(Name,[Name])] -> Module -> HsStmt -> m HsStmt
+renameStatement fls ns modName stmt = runRename rename modName fls ns stmt
hunk ./FrontEnd/Rename.hs 156
-{-# NOINLINE renameStatement #-}
-renameStatement :: MonadWarn m => FieldMap -> [(Name,[Name])] -> Module -> HsStmt -> m HsStmt
-renameStatement fls ns modName stmt = mapM_ addWarning errors >> return renamedStmt where
-    initialGlobalSubTable = Map.fromList [ (x,y) | ((typ,x),[y]) <- ns', typ == Val || typ == DataConstructor ]
-    initialTypeSubTable = Map.fromList [ (x,y) | ((typ,x),[y]) <- ns', typ == TypeConstructor || typ == ClassName ]
-    ns' = map fn ns
-    fn (n,ns) = (fromName n, map nameName ns)
-    nameMap = Map.fromList $ map f ns where
-        f (x,[y]) = (x,Right y)
-        f (x,ys)  = (x,Left $ ambig x ys)
-
-    errorTab =  Map.fromList [ (x,ambig x ys) | ((typ,x),ys@(_:_:_)) <- ns' ]
-
-    startState = ScopeState {
-        typeSubTable   = initialTypeSubTable,
-        errorTable     = errorTab,
-        unique         = 1,   -- start the counting at 1
-        globalSubTable = initialGlobalSubTable,
-        fieldLabels    = fls
-        }
-    startEnv = Env {
-        envSubTable = initialGlobalSubTable,
-        envModule   = modName,
-        envNameMap  = nameMap,
-        envSrcLoc   = mempty
-    }
-
-    (renamedStmt, _, errors) = runRWS (unRM $ rename stmt) startEnv startState
hunk ./FrontEnd/Rename.hs 160
-        addTopLevels $ hsModuleDecls tidy
+        addTopLevels (hsModuleDecls tidy) $ do
hunk ./FrontEnd/Rename.hs 163
---        local (\e -> e { envSubTable = envSubTable e `Map.union`  gst }) $ do
hunk ./FrontEnd/Rename.hs 277
-    
hunk ./FrontEnd/Rename.hs 278
+
hunk ./FrontEnd/Rename.hs 371
-    getNames a = [] 
+    getNames a = []
hunk ./FrontEnd/Rename.hs 499
-
hunk ./FrontEnd/Rename.hs 503
---    wrapInAsPat (HsVar hsName')
-
hunk ./FrontEnd/Rename.hs 508
-    --let fi = if abs num > 500000000 then func_fromInteger else func_fromInt
-    --z <- renameHsExp fi st
-    --return $ HsParen (HsApp z i)