Browse Source

Fixed redundant this inspector.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
3336a43382
  1. 31
      ICSharpCode.NRefactory.CSharp/Refactoring/Inspector/RedundantThisInspector.cs

31
ICSharpCode.NRefactory.CSharp/Refactoring/Inspector/RedundantThisInspector.cs

@ -32,6 +32,7 @@ using ICSharpCode.NRefactory.Semantics; @@ -32,6 +32,7 @@ using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.CSharp.Resolver;
using System.Linq;
namespace ICSharpCode.NRefactory.CSharp.Refactoring
{
/// <summary>
@ -66,47 +67,35 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -66,47 +67,35 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
this.inspector = inspector;
}
static IMember GetMember(ResolveResult result)
static IMember GetMember (ResolveResult result)
{
if (result is MemberResolveResult) {
return ((MemberResolveResult)result).Member;
}
return null;
}
static IEnumerable<IMember> GetMembers (ResolveResult result)
{
if (result is MemberResolveResult) {
return new IMember[] { ((MemberResolveResult)result).Member };
} else if (result is MethodGroupResolveResult) {
return ((MethodGroupResolveResult)result).Methods;
return ((MethodGroupResolveResult)result).Methods.First ();
}
return null;
}
public override void VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression)
public override void VisitThisReferenceExpression (ThisReferenceExpression thisReferenceExpression)
{
base.VisitThisReferenceExpression(thisReferenceExpression);
base.VisitThisReferenceExpression (thisReferenceExpression);
var memberReference = thisReferenceExpression.Parent as MemberReferenceExpression;
if (memberReference == null) {
return;
}
var state = ctx.GetResolverStateAfter(thisReferenceExpression);
var wholeResult = ctx.Resolve(thisReferenceExpression);
var state = ctx.GetResolverStateAfter (thisReferenceExpression);
var wholeResult = ctx.Resolve (memberReference);
var result = state.LookupSimpleNameOrTypeName(memberReference.MemberName, new List<IType> (), SimpleNameLookupMode.Expression);
if (result == null || wholeResult == null) {
return;
}
IMember member = GetMember(wholeResult);
IMember member = GetMember (wholeResult);
if (member == null) {
return;
}
var result = state.LookupSimpleNameOrTypeName (memberReference.MemberName, new List<IType> (), SimpleNameLookupMode.Expression);
bool isRedundant;
if (result is MemberResolveResult) {
isRedundant = ((MemberResolveResult)result).Member.Region.Equals(member.Region);

Loading…
Cancel
Save