Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/NRefactory.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2014-02-06 10:32:58 +0400
committerMike Krüger <mkrueger@xamarin.com>2014-02-06 10:32:58 +0400
commit3582f57fe36dbf3860e266aa83d7746ea2c2cb43 (patch)
treef6e11e219b385c2fc1a5d77009ff05569ed3e977 /ICSharpCode.NRefactory.CSharp.Refactoring
parentbbe2d1252efe5371c74a751c3c9f0229d3083dba (diff)
Fixed bug in StaticEventSubscriptionIssue
Diffstat (limited to 'ICSharpCode.NRefactory.CSharp.Refactoring')
-rw-r--r--ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/StaticEventSubscriptionIssue.cs11
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);
}
}
}