diff --git a/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Extensions/ConnectionsExtensions.cs b/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Extensions/ConnectionsExtensions.cs index 1c0ffb17b..cd653a2ba 100644 --- a/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Extensions/ConnectionsExtensions.cs +++ b/src/modules/Elsa.Workflows.Core/Activities/Flowchart/Extensions/ConnectionsExtensions.cs @@ -12,10 +12,10 @@ public static class ConnectionsExtensions /// public static IEnumerable Descendants(this ICollection connections, IActivity parent) { - var visitedActivities = new HashSet(); - return connections.Descendants(parent, visitedActivities); + var visitedConnections = new HashSet(); + return connections.Descendants(parent, visitedConnections); } - + /// /// Returns all ancestor connections of the specified parent activity. /// @@ -41,7 +41,7 @@ public static class ConnectionsExtensions return filteredConnections; } - + /// /// Returns all "left" ancestor connections of the specified activity. "Left" means "not a descendant of the activity". /// @@ -58,27 +58,27 @@ public static class ConnectionsExtensions /// Returns all inbound activities of the specified activity. /// public static IEnumerable InboundActivities(this ICollection connections, IActivity activity) => connections.InboundConnections(activity).Select(x => x.Source.Activity); - + /// /// Returns all "left" inbound activities of the specified activity. "Left" means "not a descendant of the activity". /// public static IEnumerable LeftInboundActivities(this ICollection connections, IActivity activity) => connections.LeftInboundConnections(activity).Select(x => x.Source.Activity); - + /// /// Returns all "left" ancestor activities of the specified activity. "Left" means "not a descendant of the activity". /// public static IEnumerable LeftAncestorActivities(this ICollection connections, IActivity activity) => connections.LeftAncestorConnections(activity).Select(x => x.Source.Activity); - private static IEnumerable Descendants(this ICollection connections, IActivity parent, ISet visitedActivities) + private static IEnumerable Descendants(this ICollection connections, IActivity parent, ISet visitedConnections) { - var children = connections.Where(x => parent == x.Source.Activity && !visitedActivities.Contains(x.Target.Activity)).ToList(); + var children = connections.Where(x => parent == x.Source.Activity && !visitedConnections.Contains(x)).ToList(); foreach (var child in children) { - visitedActivities.Add(child.Target.Activity); + visitedConnections.Add(child); yield return child; - var descendants = connections.Descendants(child.Target.Activity, visitedActivities).ToList(); + var descendants = connections.Descendants(child.Target.Activity, visitedConnections).ToList(); foreach (var descendant in descendants) { @@ -86,7 +86,7 @@ public static class ConnectionsExtensions } } } - + private static IEnumerable Ancestors(this ICollection connections, IActivity activity, ISet visitedActivities) { var parents = connections.Where(x => activity == x.Target.Activity && !visitedActivities.Contains(x.Source.Activity)).ToList();