Browse Source

Don't show 'Method with optional parameter is hidden by overload' issue if the overloads have different type parameters.

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
3e42bc1e6a
  1. 2
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/MethodOverloadHidesOptionalParameterIssue.cs
  2. 12
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/MethodOverloadHidesOptionalParameterIssueTests.cs

2
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/MethodOverloadHidesOptionalParameterIssue.cs

@ -64,7 +64,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -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<IMethod> ()
var overloads = method.DeclaringType.GetMethods(m => m.Name == method.Name && m.TypeParameters.Count == method.TypeParameters.Count)
.ToArray ();
var parameterNodes = methodDeclaration.Parameters.ToArray();

12
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/MethodOverloadHidesOptionalParameterIssueTests.cs

@ -68,6 +68,18 @@ class TestClass @@ -68,6 +68,18 @@ class TestClass
{
void TestMethod (int a, int b = 1, int c = 1)
{ }
}";
Test<MethodOverloadHidesOptionalParameterIssue> (input, 0);
}
[Test]
public void TestNoIssue_Generics ()
{
var input = @"
class TestClass
{
void TestMethod (object obj) { }
void TestMethod<T> (object obj, int arg = 0) { }
}";
Test<MethodOverloadHidesOptionalParameterIssue> (input, 0);
}

Loading…
Cancel
Save