Browse Source

[CodeActions] Don't crash on null accessors in ValueParameterUnusedIssue.

newNRvisualizers
Simon Lindgren 14 years ago
parent
commit
ac2e8ef636
  1. 7
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ValueParameterUnusedIssue.cs
  2. 16
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ValueParameterUnusedTests.cs

7
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ValueParameterUnusedIssue.cs

@ -24,7 +24,6 @@ @@ -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 @@ -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 @@ -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)

16
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ValueParameterUnusedTests.cs

@ -117,13 +117,25 @@ namespace ICSharpCode.NRefactory.CSharp.CodeIssues @@ -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);

Loading…
Cancel
Save