on master help sign in
Fix depth-first search (name shadowing).
4561725Matus Tejiscak
src/Idris/Erasure.hs+7−7
@@ -72,16 +72,16 @@ buildDepMap ctx ns = dfs S.empty M.empty ns
72 dfs visited deps [] = deps
72 dfs visited deps [] = deps
73 dfs visited deps (n : ns)
73 dfs visited deps (n : ns)
74 | n `S.member` visited = dfs visited deps ns
74 | n `S.member` visited = dfs visited deps ns
75− | otherwise = dfs (S.insert n visited) (M.unionWith S.union (getDeps n) deps) (next ++ ns)
75+ | otherwise = dfs (S.insert n visited) (M.unionWith S.union deps' deps) (next ++ ns)
76 where
76 where
77 next = [n | n <- S.toList depn, n `S.notMember` visited]
77 next = [n | n <- S.toList depn, n `S.notMember` visited]
78− depn = S.delete n $ depNames deps
78+ depn = S.delete n $ depNames deps'
79− deps = getDeps n
79+ deps' = getDeps n
80
80
81− -- extract all names that a function depends on
81+ -- extract all names that a function depends on
82− -- from the Deps of the function
82+ -- from the Deps of the function
83− depNames :: Deps -> Set Name
83+ depNames :: Deps -> Set Name
84− depNames = S.unions . map (S.map fst) . M.keys
84+ depNames = S.unions . map (S.map fst) . M.keys
85
85
86 -- get Deps for a Name
86 -- get Deps for a Name
87 getDeps :: Name -> Deps
87 getDeps :: Name -> Deps