Browse Source

[CodeIssues] CallToObjectViaBaseIssue: Ignore calls which do not target members of 'base'.

newNRvisualizers
Simon Lindgren 13 years ago
parent
commit
73b80fc36b
  1. 4
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/CallToObjectEqualsViaBaseIssue.cs
  2. 21
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/CallToObjectEqualsViaBaseTests.cs

4
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/CallToObjectEqualsViaBaseIssue.cs

@ -55,6 +55,10 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -55,6 +55,10 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (invocationExpression.Arguments.Count != 1) {
return;
}
var memberExpression = invocationExpression.Target as MemberReferenceExpression;
if (memberExpression == null || !(memberExpression.Target is BaseReferenceExpression)) {
return;
}
var resolveResult = ctx.Resolve(invocationExpression) as InvocationResolveResult;
if (resolveResult == null || !resolveResult.Member.DeclaringTypeDefinition.IsKnownType(KnownTypeCode.Object)) {
return;

21
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/CallToObjectEqualsViaBaseTests.cs

@ -89,6 +89,27 @@ class Bar : Foo @@ -89,6 +89,27 @@ class Bar : Foo
}
}");
}
[Test]
public void IgnoresCallsToOtherObjects()
{
var input = @"
class Foo
{
}
class Bar : Foo
{
void Baz ()
{
var foo1 = new Foo();
var foo2 = new Foo();
bool b = foo1.Equals(foo2);
}
}";
TestRefactoringContext context;
var issues = GetIssues(new CallToObjectEqualsViaBaseIssue(), input, out context);
Assert.AreEqual(0, issues.Count);
}
}
}

Loading…
Cancel
Save