@@ -308,9 +308,9 @@ data State =
308addRecDefs :: ModuleName.Canonical -> [Can.Def] -> Opt.Graph -> Opt.Graph
308addRecDefs :: ModuleName.Canonical -> [Can.Def] -> Opt.Graph -> Opt.Graph
309addRecDefs home defs (Opt.Graph mains nodes fieldCounts) =
309addRecDefs home defs (Opt.Graph mains nodes fieldCounts) =
311− valueNames = foldr addValueName [] defs
311+ names = map toName defs
312− cycleName = Opt.Global home (N.toCompositeName valueNames)
312+ cycleName = Opt.Global home (N.toCompositeName names)
313− cycle = Set.fromList valueNames
313+ cycle = foldr addValueName Set.empty defs
314 links = foldr (addLink home (Opt.Link cycleName)) Map.empty defs
314 links = foldr (addLink home (Opt.Link cycleName)) Map.empty defs
316 (deps, fields, State values funcs) =
316 (deps, fields, State values funcs) =
@@ -323,11 +323,18 @@ addRecDefs home defs (Opt.Graph mains nodes fieldCounts) =
323 (Map.unionWith (+) fields fieldCounts)
323 (Map.unionWith (+) fields fieldCounts)
326+toName :: Can.Def -> N.Name
329+ Can.Def (A.At _ name) _ _ -> name
330+ Can.TypedDef (A.At _ name) _ _ _ _ -> name
326−addValueName :: Can.Def -> [N.Name] -> [N.Name]
333+addValueName :: Can.Def -> Set.Set N.Name -> Set.Set N.Name
327addValueName def names =
334addValueName def names =
328 case def of
335 case def of
329− Can.Def (A.At _ name) args _ -> if null args then name:names else names
336+ Can.Def (A.At _ name) args _ -> if null args then Set.insert name names else names
330− Can.TypedDef (A.At _ name) _ args _ _ -> if null args then name:names else names
337+ Can.TypedDef (A.At _ name) _ args _ _ -> if null args then Set.insert name names else names
333addLink :: ModuleName.Canonical -> Opt.Node -> Can.Def -> Map.Map Opt.Global Opt.Node -> Map.Map Opt.Global Opt.Node
340addLink :: ModuleName.Canonical -> Opt.Node -> Can.Def -> Map.Map Opt.Global Opt.Node -> Map.Map Opt.Global Opt.Node