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); }