From ac2e8ef6365f761203097b392d6a67159aa0f519 Mon Sep 17 00:00:00 2001 From: Simon Lindgren Date: Tue, 26 Jun 2012 18:00:02 +0200 Subject: [PATCH] [CodeActions] Don't crash on null accessors in ValueParameterUnusedIssue. --- .../CodeIssues/ValueParameterUnusedIssue.cs | 7 +++---- .../CodeIssues/ValueParameterUnusedTests.cs | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ValueParameterUnusedIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ValueParameterUnusedIssue.cs index 220d905b9c..06dfe355b3 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ValueParameterUnusedIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ValueParameterUnusedIssue.cs @@ -24,7 +24,6 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. using System.Collections.Generic; -using ICSharpCode.NRefactory.Semantics; using System.Linq; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.CSharp.Resolver; @@ -59,9 +58,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring public override void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration) { - var body = propertyDeclaration.Setter.Body; - if (!body.IsNull) - FindIssuesInNode(propertyDeclaration.Setter, body); + FindIssuesInNode(propertyDeclaration.Setter, propertyDeclaration.Setter.Body); } public override void VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration) @@ -82,6 +79,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring void FindIssuesInNode(AstNode anchor, AstNode node, string accessorName = "setter") { + if (node == null || node.IsNull) + return; var variable = context.GetResolverStateBefore(node).LocalVariables .Where(v => v.Name == "value").FirstOrDefault(); if (variable == null) diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ValueParameterUnusedTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ValueParameterUnusedTests.cs index 83bfd35a5c..090950e3a8 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ValueParameterUnusedTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ValueParameterUnusedTests.cs @@ -117,13 +117,25 @@ namespace ICSharpCode.NRefactory.CSharp.CodeIssues var issues = GetIssues(new ValueParameterUnusedIssue(), input, out context); Assert.AreEqual(0, issues.Count); } - + [Test] public void IgnoreReadOnlyProperty() { var input = @"class A { - string Property { get; } +string Property { get; } +}"; + TestRefactoringContext context; + var issues = GetIssues(new ValueParameterUnusedIssue(), input, out context); + Assert.AreEqual(0, issues.Count); + } + + [Test] + public void DoesNotCrashOnNullIndexerAccessorBody() + { + var input = @"abstract class A +{ +public abstract string this[int i] { get; set; } }"; TestRefactoringContext context; var issues = GetIssues(new ValueParameterUnusedIssue(), input, out context);