diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/MethodOverloadHidesOptionalParameterIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/MethodOverloadHidesOptionalParameterIssue.cs index 3420a3ddc2..2911cee187 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/MethodOverloadHidesOptionalParameterIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/MethodOverloadHidesOptionalParameterIssue.cs @@ -64,7 +64,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring if (method.Parameters.Count == 0 || !method.Parameters.Last ().IsOptional) return; - var overloads = method.DeclaringType.GetMembers (m => m.Name == method.Name).OfType () + var overloads = method.DeclaringType.GetMethods(m => m.Name == method.Name && m.TypeParameters.Count == method.TypeParameters.Count) .ToArray (); var parameterNodes = methodDeclaration.Parameters.ToArray(); diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/MethodOverloadHidesOptionalParameterIssueTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/MethodOverloadHidesOptionalParameterIssueTests.cs index 14df3a1dd3..5c72a57eea 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/MethodOverloadHidesOptionalParameterIssueTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/MethodOverloadHidesOptionalParameterIssueTests.cs @@ -68,6 +68,18 @@ class TestClass { void TestMethod (int a, int b = 1, int c = 1) { } +}"; + Test (input, 0); + } + + [Test] + public void TestNoIssue_Generics () + { + var input = @" +class TestClass +{ + void TestMethod (object obj) { } + void TestMethod (object obj, int arg = 0) { } }"; Test (input, 0); }