[make DeclsDepends use traversal routines, add Writer instance to SrcLoc monads
John Meacham <john@repetae.net>**20060408014909] hunk ./FrontEnd/DeclsDepends.hs 4
-
hunk ./FrontEnd/DeclsDepends.hs 5
-
hunk ./FrontEnd/DeclsDepends.hs 8
-
hunk ./FrontEnd/DeclsDepends.hs 9
-
hunk ./FrontEnd/DeclsDepends.hs 15
+import Control.Monad.Writer
+
hunk ./FrontEnd/DeclsDepends.hs 22
+import FrontEnd.Syn.Traverse
hunk ./FrontEnd/DeclsDepends.hs 66
-getExpDeps :: HsExp -> [HsName]
-getExpDeps (HsVar name)
-   = [name]
-
-getExpDeps (HsCon _)
-   = []
-
-getExpDeps (HsLit _)
-   = []
-
-getExpDeps (HsInfixApp e1 e2 e3)
-   = getExpDeps e1 ++
-     getExpDeps e2 ++
-     getExpDeps e3
-
-getExpDeps (HsApp e1 e2)
-   = getExpDeps e1 ++ getExpDeps e2
-
-getExpDeps (HsNegApp e)
-   = getExpDeps e
-
-getExpDeps (HsLambda _ _ e)
-   = getExpDeps e
hunk ./FrontEnd/DeclsDepends.hs 67
-getExpDeps (HsLet decls e)
-   = foldr (++) [] (map getLocalDeclDeps decls) ++
-     getExpDeps e
hunk ./FrontEnd/DeclsDepends.hs 68
-getExpDeps (HsIf e1 e2 e3)
-   = getExpDeps e1 ++
-     getExpDeps e2 ++
-     getExpDeps e3
-
-getExpDeps (HsCase e alts)
-   = getExpDeps e ++
-     foldr (++) [] (map getAltDeps alts)
-
-getExpDeps (HsDo stmts)
-   = foldr (++) [] (map getStmtDeps stmts)
-
-getExpDeps (HsTuple exps)
-   = foldr (++) [] (map getExpDeps exps)
-
-getExpDeps (HsList exps)
-   = foldr (++) [] (map getExpDeps exps)
-
-getExpDeps (HsParen e)
-   = getExpDeps e
-
-getExpDeps (HsLeftSection e1 e2)
-   = getExpDeps e1 ++
-     getExpDeps e2
-
-getExpDeps (HsRightSection e1 e2)
-   = getExpDeps e1 ++
-     getExpDeps e2
-
-getExpDeps (HsEnumFrom e)
-   = getExpDeps e
-
-getExpDeps (HsEnumFromTo e1 e2)
-   = getExpDeps e1 ++
-     getExpDeps e2
-
-getExpDeps (HsEnumFromThen e1 e2)
-   = getExpDeps e1 ++
-     getExpDeps e2
-
-getExpDeps (HsEnumFromThenTo e1 e2 e3)
-   = getExpDeps e1 ++
-     getExpDeps e2 ++
-     getExpDeps e3
-getExpDeps (HsListComp e stmts) = getExpDeps e ++ foldr (++) [] (map getStmtDeps stmts)
-getExpDeps (HsExpTypeSig _sloc e _qualtype) = getExpDeps e
-getExpDeps (HsAsPat _name e) = getExpDeps e
-getExpDeps (HsWildCard _) = []
-getExpDeps (HsIrrPat e) = getExpDeps e
-getExpDeps (HsRecConstr _ fs) = concat [ getExpDeps e | HsFieldUpdate _ e <- fs ]
-getExpDeps (HsRecUpdate e fs) =  concat $ getExpDeps e:[ getExpDeps e | HsFieldUpdate _ e <- fs ]
+getExpDeps :: HsExp -> [HsName]
+getExpDeps e = execWriter (expDeps e)
hunk ./FrontEnd/DeclsDepends.hs 71
-getExpDeps e = error $ "getExpDeps: " ++ show e
+expDeps (HsVar name) = tell [name]
+expDeps (HsLet decls e) = do
+    expDeps e
+    tell $ foldr (++) [] (map getLocalDeclDeps decls)
+expDeps (HsCase e alts) = do
+    expDeps e
+    tell $ foldr (++) [] (map getAltDeps alts)
+expDeps (HsDo stmts) = do
+    tell $ foldr (++) [] (map getStmtDeps stmts)
+expDeps (HsListComp e stmts) = do
+    expDeps e
+    tell $ foldr (++) [] (map getStmtDeps stmts)
+expDeps e = traverseHsExp_ expDeps e
hunk ./FrontEnd/DependAnalysis.hs 49
-	nameToNodeFM = listToFM [ (getName x, x) | x <- ns ]	
+	nameToNodeFM = listToFM [ (getName x, x) | x <- ns ]
hunk ./FrontEnd/DependAnalysis.hs 199
-	
+
hunk ./FrontEnd/SrcLoc.hs 3
+import Control.Monad.Writer
+import Control.Monad.Identity
+
hunk ./FrontEnd/SrcLoc.hs 74
+instance Monoid w => MonadSrcLoc (Writer w) where
+    getSrcLoc = return mempty
+instance Monoid w => MonadSetSrcLoc (Writer w) where
+    withSrcLoc _ a = a
+
+instance MonadSrcLoc Identity where
+    getSrcLoc = return mempty
+instance MonadSetSrcLoc Identity where
+    withSrcLoc _ a = a
+