diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2014-02-06 10:32:58 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2014-02-06 10:32:58 +0400 |
commit | 3582f57fe36dbf3860e266aa83d7746ea2c2cb43 (patch) | |
tree | f6e11e219b385c2fc1a5d77009ff05569ed3e977 /ICSharpCode.NRefactory.CSharp.Refactoring | |
parent | bbe2d1252efe5371c74a751c3c9f0229d3083dba (diff) |
Fixed bug in StaticEventSubscriptionIssue
Diffstat (limited to 'ICSharpCode.NRefactory.CSharp.Refactoring')
-rw-r--r-- | ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/StaticEventSubscriptionIssue.cs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/StaticEventSubscriptionIssue.cs b/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/StaticEventSubscriptionIssue.cs index 4025a784..49db466a 100644 --- a/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/StaticEventSubscriptionIssue.cs +++ b/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/StaticEventSubscriptionIssue.cs @@ -55,6 +55,11 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring public override void VisitSyntaxTree(SyntaxTree syntaxTree) { base.VisitSyntaxTree(syntaxTree); + + foreach (var assignedEvent in assignedEvents) { + addedEvents.Remove(assignedEvent); + } + foreach (var hs in removedEvents) { HashSet<Tuple<IMember, AssignmentExpression>> h; if (!addedEvents.TryGetValue(hs.Key, out h)) @@ -94,6 +99,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring } readonly Dictionary<IMember, HashSet<Tuple<IMember, AssignmentExpression>>> addedEvents = new Dictionary<IMember, HashSet<Tuple<IMember, AssignmentExpression>>>(); readonly Dictionary<IMember, HashSet<IMember>> removedEvents = new Dictionary<IMember, HashSet<IMember>>(); + readonly HashSet<IMember> assignedEvents = new HashSet<IMember> (); public override void VisitAssignmentExpression(AssignmentExpression assignmentExpression) { @@ -128,6 +134,11 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring if (!removedEvents.TryGetValue(left.Member, out hs)) removedEvents[left.Member] = hs = new HashSet<IMember>(); hs.Add(right.Methods.First()); + } else if (assignmentExpression.Operator == AssignmentOperatorType.Assign) { + var left = ctx.Resolve(assignmentExpression.Left) as MemberResolveResult; + if (left == null || left.Member.SymbolKind != SymbolKind.Event || !left.Member.IsStatic) + return; + assignedEvents.Add(left.Member); } } } |