From be34221618bb9a70c62855a1a3d1860859cb59ba Mon Sep 17 00:00:00 2001 From: "Konrad M. Kruczynski" Date: Tue, 28 Aug 2012 12:22:20 +0200 Subject: [PATCH] [CodeIssues] Do not report unused parameter if it is out or ref. --- .../ParameterOnlyAssignedIssue.cs | 3 +- .../ParameterOnlyAssignedIssueTests.cs | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/ParameterOnlyAssignedIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/ParameterOnlyAssignedIssue.cs index dd4b617155..bea8b1599e 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/ParameterOnlyAssignedIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/ParameterOnlyAssignedIssue.cs @@ -57,7 +57,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring var resolveResult = ctx.Resolve (parameterDeclaration) as LocalResolveResult; if (resolveResult == null) return; - if (!TestOnlyAssigned (ctx, unit, resolveResult.Variable)) + if (parameterDeclaration.ParameterModifier == ParameterModifier.Out || parameterDeclaration.ParameterModifier == ParameterModifier.Ref + || !TestOnlyAssigned (ctx, unit, resolveResult.Variable)) return; AddIssue (parameterDeclaration.NameToken, ctx.TranslateString ("Parameter is assigned by its value is never used")); diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterOnlyAssignedIssueTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterOnlyAssignedIssueTests.cs index be3a0fc8bd..9c0b5b3162 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterOnlyAssignedIssueTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterOnlyAssignedIssueTests.cs @@ -57,6 +57,34 @@ class TestClass i = 1; return i; } +}"; + Test (input, 0); + } + + [Test] + public void TestOutParametr () + { + var input = @" +class TestClass +{ + void TestMethod(out int i) + { + i = 1; + } +}"; + Test (input, 0); + } + + [Test] + public void TestRefParametr () + { + var input = @" +class TestClass +{ + void TestMethod(ref int i) + { + i = 1; + } }"; Test (input, 0); }