Browse Source

Find references tries now to detect delegate usages of methods.

TODO: Overload resolution.
newNRvisualizers
Mike Krüger 14 years ago
parent
commit
b09fd7ff58
  1. 20
      ICSharpCode.NRefactory.CSharp/Resolver/FindReferences.cs

20
ICSharpCode.NRefactory.CSharp/Resolver/FindReferences.cs

@ -608,14 +608,30 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver @@ -608,14 +608,30 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
PointerReferenceExpression pre = target as PointerReferenceExpression;
if (pre != null)
return pre.MemberName == method.Name;
} else if (!(node.Parent is InvocationExpression)) {
// MemberReferences & Identifiers that aren't used in an invocation can still match the method
// as delegate name.
var mre = node as MemberReferenceExpression;
if (mre != null) {
return mre.MemberName == method.Name;
} else {
var ident = node as IdentifierExpression;
if (ident != null)
return ident.Identifier == method.Name;
}
}
return node is MethodDeclaration;
}
internal override bool IsMatch(ResolveResult rr)
{
MemberResolveResult mrr = rr as MemberResolveResult;
return mrr != null && method == mrr.Member.MemberDefinition;
var mrr = rr as MemberResolveResult;
if (mrr != null)
return method == mrr.Member.MemberDefinition;
// Delegate case is not 100% correct - TODO: overload resolution.
var mgr = rr as MethodGroupResolveResult;
return mgr != null && mgr.Methods.Any (m => m == method);
}
}
#endregion

Loading…
Cancel
Save