diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/CallToObjectEqualsViaBaseIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/CallToObjectEqualsViaBaseIssue.cs index 4b770c18d6..bf16d1a659 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/CallToObjectEqualsViaBaseIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/CallToObjectEqualsViaBaseIssue.cs @@ -56,7 +56,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring return; } var memberExpression = invocationExpression.Target as MemberReferenceExpression; - if (memberExpression == null || !(memberExpression.Target is BaseReferenceExpression)) { + if (memberExpression == null || memberExpression.MemberName != "Equals" || !(memberExpression.Target is BaseReferenceExpression)) { return; } var resolveResult = ctx.Resolve(invocationExpression) as InvocationResolveResult; diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/IncorrectCallToObjectGetHashCodeIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/IncorrectCallToObjectGetHashCodeIssue.cs index f22d87e21a..2d77b8f387 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/IncorrectCallToObjectGetHashCodeIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/IncorrectCallToObjectGetHashCodeIssue.cs @@ -65,7 +65,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring base.VisitInvocationExpression(invocationExpression); var resolveResult = ctx.Resolve(invocationExpression) as InvocationResolveResult; - if (resolveResult == null || !(resolveResult.TargetResult is ThisResolveResult) || + if (resolveResult == null || !(resolveResult.TargetResult is ThisResolveResult) || resolveResult.Member.Name != "GetHashCode" || !resolveResult.Member.DeclaringTypeDefinition.IsKnownType(KnownTypeCode.Object)) { return; } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/IncorrectCallToGetHashCodeTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/IncorrectCallToGetHashCodeTests.cs index 13ad1da17a..a3af827214 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/IncorrectCallToGetHashCodeTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/IncorrectCallToGetHashCodeTests.cs @@ -88,7 +88,7 @@ class Bar : IFoo var issues = GetIssues(new IncorrectCallToObjectGetHashCodeIssue(), input, out context); Assert.AreEqual(0, issues.Count); } - + [Test] public void DoesNotCheckOutsideOverriddenGetHashCode() { @@ -99,6 +99,23 @@ class Foo { return base.GetHashCode(); } +}"; + TestRefactoringContext context; + var issues = GetIssues(new IncorrectCallToObjectGetHashCodeIssue(), input, out context); + Assert.AreEqual(0, issues.Count); + } + + [Test] + public void DoesNotWarnAboutCallsToOtherMethods() + { + var input = @" +class Foo +{ + public override int GetHashCode() + { + var type = GetType(); + return 1; + } }"; TestRefactoringContext context; var issues = GetIssues(new IncorrectCallToObjectGetHashCodeIssue(), input, out context);