@@ -308,9 +308,9 @@ data State =
308308addRecDefs :: ModuleName.Canonical -> [Can.Def] -> Opt.Graph -> Opt.Graph
309309addRecDefs home defs (Opt.Graph mains nodes fieldCounts) =
310310 let
311− valueNames = foldr addValueName [] defs
312− cycleName = Opt.Global home (N.toCompositeName valueNames)
313− cycle = Set.fromList valueNames
311+ names = map toName defs
312+ cycleName = Opt.Global home (N.toCompositeName names)
313+ cycle = foldr addValueName Set.empty defs
314314 links = foldr (addLink home (Opt.Link cycleName)) Map.empty defs
315315
316316 (deps, fields, State values funcs) =
@@ -323,11 +323,18 @@ addRecDefs home defs (Opt.Graph mains nodes fieldCounts) =
323323 (Map.unionWith (+) fields fieldCounts)
324324
325325
326−addValueName :: Can.Def -> [N.Name] -> [N.Name]
326+toName :: Can.Def -> N.Name
327+toName def =
328+ case def of
329+ Can.Def (A.At _ name) _ _ -> name
330+ Can.TypedDef (A.At _ name) _ _ _ _ -> name
331+
332+
333+addValueName :: Can.Def -> Set.Set N.Name -> Set.Set N.Name
327334addValueName def names =
328335 case def of
329− Can.Def (A.At _ name) args _ -> if null args then name:names else names
330− Can.TypedDef (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
337+ Can.TypedDef (A.At _ name) _ args _ _ -> if null args then Set.insert name names else names
331338
332339
333340addLink :: ModuleName.Canonical -> Opt.Node -> Can.Def -> Map.Map Opt.Global Opt.Node -> Map.Map Opt.Global Opt.Node