diff options
Diffstat (limited to 'ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs')
-rw-r--r-- | ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs b/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs index b1d215c5..77a6c943 100644 --- a/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs +++ b/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantAssignmentIssue.cs @@ -433,8 +433,10 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring if (IsInsideTryOrCatchBlock(node.References [0])) continue; ProcessNode(node, true, nodeStates); + visitedNodes.Clear (); } } + HashSet<VariableReferenceNode> visitedNodes = new HashSet<Refactoring.VariableReferenceNode> (); void ProcessNode(VariableReferenceNode node, bool addIssue, IDictionary<VariableReferenceNode, NodeState> nodeStates) @@ -444,6 +446,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring bool? reachable = false; foreach (var nextNode in node.NextNodes) { + if (!visitedNodes.Add (nextNode)) + continue; if (nodeStates [nextNode] == NodeState.None) ProcessNode(nextNode, false, nodeStates); |