Browse Source

[CodeIssues] Don't suggest demotion to a non-array type for params parameters.

newNRvisualizers
Simon Lindgren 14 years ago
parent
commit
93fce4f8a6
  1. 13
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ParameterCanBeDemotedIssue/TypeCriteriaCollector.cs
  2. 16
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterCanBeDemotedIssue/ParameterCanBeDemotedTests.cs

13
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ParameterCanBeDemotedIssue/TypeCriteriaCollector.cs

@ -131,6 +131,19 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -131,6 +131,19 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
}
}
public override void VisitMethodDeclaration(MethodDeclaration methodDeclaration)
{
base.VisitMethodDeclaration(methodDeclaration);
var lastParameter = methodDeclaration.Parameters.LastOrNullObject();
if (lastParameter.IsNull || !lastParameter.ParameterModifier.HasFlag(ParameterModifier.Params))
return;
var localResolveResult = context.Resolve(lastParameter) as LocalResolveResult;
if (localResolveResult == null)
return;
AddCriterion(localResolveResult.Variable, new IsArrayTypeCriterion());
}
Role[] roles = new [] {
Roles.Expression,
Roles.Argument,

16
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterCanBeDemotedIssue/ParameterCanBeDemotedTests.cs

@ -649,6 +649,22 @@ class TestClass @@ -649,6 +649,22 @@ class TestClass
Assert.AreEqual(0, issues.Count);
}
[Test]
public void LimitsParamsParametersToArrays()
{
var input = @"
class TestClass
{
void Write(params string[] s)
{
System.Console.WriteLine (s);
}
}";
TestRefactoringContext context;
var issues = GetIssues(new ParameterCanBeDemotedIssue(false), input, out context);
Assert.AreEqual(0, issues.Count);
}
[Test]
public void IgnoresImplicitInterfaceImplementations()
{

Loading…
Cancel
Save