diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableNotUsedIssues/ParameterNotUsedIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableNotUsedIssues/ParameterNotUsedIssue.cs index ba52d904e7..026b0ec4db 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableNotUsedIssues/ParameterNotUsedIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/VariableNotUsedIssues/ParameterNotUsedIssue.cs @@ -112,6 +112,10 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring if (methodDeclaration.Body.IsNull) return; + if (methodDeclaration.Modifiers.HasFlag (Modifiers.Virtual) || + methodDeclaration.Modifiers.HasFlag (Modifiers.New) || + methodDeclaration.Modifiers.HasFlag (Modifiers.Partial)) + return; var methodResolveResult = ctx.Resolve(methodDeclaration) as MemberResolveResult; if (methodResolveResult == null) return; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterNotUsedIssueTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterNotUsedIssueTests.cs index 6865dd770a..f7c1316d9b 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterNotUsedIssueTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ParameterNotUsedIssueTests.cs @@ -178,5 +178,43 @@ class TestClass { }"; Test (input, 1); } + + [Test] + public void TestUnusedParameterInVirtualMethod () + { + var input = @" +class TestClass { + public virtual void TestMethod (int i) + { + } +}"; + Test (input, 0); + } + + [Test] + public void TestUnusedParameterInShadowedMethod () + { + var input = @" +class TestClass { + public new void TestMethod (int i) + { + } +}"; + Test (input, 0); + } + + + [Test] + public void TestUnusedParameterInPartialMethod () + { + var input = @" +partial class TestClass { + partial void TestMethod (int i) + { + } +}"; + Test (input, 0); + } + } }