diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/LocalVariableOnlyAssignedIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/LocalVariableOnlyAssignedIssue.cs index d30d245654..7b66ba463e 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/LocalVariableOnlyAssignedIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/LocalVariableOnlyAssignedIssue.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring { [IssueDescription ("Local variable is only assigned", - Description = "Local variable is assigned by its value is never used", + Description = "Local variable is assigned but its value is never used", Category = IssueCategories.CodeQualityIssues, Severity = Severity.Warning, IssueMarker = IssueMarker.Underline)] @@ -62,7 +62,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring if (!TestOnlyAssigned (ctx, decl.Parent, resolveResult.Variable)) return; AddIssue (variableInitializer.NameToken, - ctx.TranslateString ("Local variable is assigned by its value is never used")); + ctx.TranslateString ("Local variable is assigned but its value is never used")); } } } diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/ParameterOnlyAssignedIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/ParameterOnlyAssignedIssue.cs index 0d5ab0c8da..f3797fef4e 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/ParameterOnlyAssignedIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/ParameterOnlyAssignedIssue.cs @@ -28,7 +28,7 @@ using ICSharpCode.NRefactory.Semantics; namespace ICSharpCode.NRefactory.CSharp.Refactoring { [IssueDescription ("Parameter is only assigned", - Description = "Parameter is assigned by its value is never used.", + Description = "Parameter is assigned but its value is never used.", Category = IssueCategories.CodeQualityIssues, Severity = Severity.Warning, IssueMarker = IssueMarker.Underline)] @@ -60,7 +60,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring return; } AddIssue(parameterDeclaration.NameToken, - ctx.TranslateString("Parameter is assigned by its value is never used")); + ctx.TranslateString("Parameter is assigned but its value is never used")); } } } diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/VariableOnlyAssignedIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/VariableOnlyAssignedIssue.cs index 6c6d6820c2..126b59da0c 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/VariableOnlyAssignedIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableOnlyAssignedIssues/VariableOnlyAssignedIssue.cs @@ -66,11 +66,16 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring case UnaryOperatorType.Decrement: case UnaryOperatorType.PostDecrement: assignment = true; + if (!(parent.Parent is ExpressionStatement)) + nonAssignment = true; continue; } } else if (parent is DirectionExpression) { if (((DirectionExpression)parent).FieldDirection == FieldDirection.Out) { assignment = true; + // Using dummy variables is necessary for ignoring + // out-arguments, so we don't want to warn for those. + nonAssignment = true; continue; } } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/LocalVariableOnlyAssignedIssueTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/LocalVariableOnlyAssignedIssueTests.cs index be61be332c..8c5ddf0ba3 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/LocalVariableOnlyAssignedIssueTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/LocalVariableOnlyAssignedIssueTests.cs @@ -85,13 +85,29 @@ class TestClass { i = 1; } + void TestMethod() + { + int tmp; + Test (out tmp); + } +}"; + // should not warn because ignoring out-arguments is legitimate + Test (input1, 0); + } + + [Test] + public void TestIncrement () + { + var input1 = @" +class TestClass +{ void TestMethod() { int i = 1; - Test (out i); + Test (i++); } }"; - Test (input1, 1); + Test (input1, 0); } } }