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)