diff --git a/ICSharpCode.NRefactory.CSharp/Ast/TypeMembers/Accessor.cs b/ICSharpCode.NRefactory.CSharp/Ast/TypeMembers/Accessor.cs
index a920a849c4..dc0d7477fb 100644
--- a/ICSharpCode.NRefactory.CSharp/Ast/TypeMembers/Accessor.cs
+++ b/ICSharpCode.NRefactory.CSharp/Ast/TypeMembers/Accessor.cs
@@ -71,6 +71,22 @@ namespace ICSharpCode.NRefactory.CSharp
get { return EntityType.Method; }
}
+ ///
+ /// Gets the 'get'/'set'/'add'/'remove' keyword
+ ///
+ public CSharpTokenNode Keyword {
+ get {
+ for (AstNode child = this.FirstChild; child != null; child = child.NextSibling) {
+ if (child.Role == PropertyDeclaration.GetKeywordRole || child.Role == PropertyDeclaration.SetKeywordRole
+ || child.Role == CustomEventDeclaration.AddKeywordRole || child.Role == CustomEventDeclaration.RemoveKeywordRole)
+ {
+ return (CSharpTokenNode)child;
+ }
+ }
+ return CSharpTokenNode.Null;
+ }
+ }
+
public BlockStatement Body {
get { return GetChildByRole (Roles.Body); }
set { SetChildByRole (Roles.Body, value); }
diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertToInitializer/StatementsToInitializerConverter.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertToInitializer/StatementsToInitializerConverter.cs
index 72ece66116..a9c6af8a23 100644
--- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertToInitializer/StatementsToInitializerConverter.cs
+++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ConvertToInitializer/StatementsToInitializerConverter.cs
@@ -416,10 +416,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
{
return
from n in node.DescendantsAndSelf
- from annotation in n.Annotations
- let replacementAnnotation = annotation as ReplacementNodeAnnotation
- where replacementAnnotation != null
- select replacementAnnotation;
+ from replacementAnnotation in n.Annotations.OfType()
+ select replacementAnnotation;
}
public static IList GetReplacedNodes(AstNode expression)
diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ValueParameterUnusedIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ValueParameterUnusedIssue.cs
index 489f29b5f8..6381c7b5b2 100644
--- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ValueParameterUnusedIssue.cs
+++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ValueParameterUnusedIssue.cs
@@ -51,12 +51,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
public override void VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration)
{
- FindIssuesInNode(indexerDeclaration.Setter, indexerDeclaration.Setter.Body);
+ FindIssuesInAccessor(indexerDeclaration.Setter);
}
public override void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration)
{
- FindIssuesInNode(propertyDeclaration.Setter, propertyDeclaration.Setter.Body);
+ FindIssuesInAccessor(propertyDeclaration.Setter);
}
public override void VisitCustomEventDeclaration(CustomEventDeclaration eventDeclaration)
@@ -70,8 +70,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
FindIssuesInNode(removeAccessor, removeAccessor.Body, "remove accessor");
}
- void FindIssuesInNode(AstNode anchor, BlockStatement body, string accessorName = "setter")
+ void FindIssuesInAccessor(Accessor accessor, string accessorName = "setter")
{
+ var body = accessor.Body;
if (!IsEligible(body))
return;
@@ -90,7 +91,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
}
if(!referenceFound)
- AddIssue(anchor, ctx.TranslateString("The " + accessorName + " does not use the 'value' parameter"));
+ AddIssue(accessor.Keyword, ctx.TranslateString("The " + accessorName + " does not use the 'value' parameter"));
}
static bool IsEligible(BlockStatement body)