Browse Source

Fix #391: XML documentation comment auto-generation incomplete on delegates.

pull/478/head
Andreas Weizel 11 years ago
parent
commit
076f1c2eb7
  1. 13
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs
  2. 6
      src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/XmlDocIssue.cs

13
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/CSharpFormattingStrategy.cs

@ -358,8 +358,17 @@ namespace CSharpBinding.FormattingStrategy @@ -358,8 +358,17 @@ namespace CSharpBinding.FormattingStrategy
sb.Append(indentation);
sb.Append("/// </summary>");
IUnresolvedMethod method = null;
if (member is IUnresolvedMethod) {
IUnresolvedMethod method = (IUnresolvedMethod)member;
method = (IUnresolvedMethod)member;
} else if (member is IUnresolvedTypeDefinition) {
IUnresolvedTypeDefinition type = (IUnresolvedTypeDefinition) member;
if (type.Kind == TypeKind.Delegate) {
method = type.Methods.FirstOrDefault(m => m.Name == "Invoke");
}
}
if (method != null) {
for (int i = 0; i < method.Parameters.Count; ++i) {
sb.Append(terminator);
sb.Append(indentation);
@ -376,8 +385,8 @@ namespace CSharpBinding.FormattingStrategy @@ -376,8 +385,8 @@ namespace CSharpBinding.FormattingStrategy
}
}
}
textArea.Document.Insert(cursorOffset, sb.ToString());
textArea.Document.Insert(cursorOffset, sb.ToString());
textArea.Caret.Offset = cursorOffset + indentation.Length + "/// ".Length + " <summary>".Length + terminator.Length;
}
}

6
src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/XmlDocIssue.cs

@ -183,6 +183,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -183,6 +183,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
var m = member as IParameterizedMember;
if (m != null && m.Parameters.Any(p => p.Name == name.Value))
break;
var dtype = member as ITypeDefinition;
if ((dtype != null) && (dtype.Kind == TypeKind.Delegate)) {
var invokeMethod = dtype.Methods.FirstOrDefault(method => method.Name == "Invoke");
if ((invokeMethod != null) && invokeMethod.Parameters.Any(p => p.Name == name.Value))
break;
}
if (name.Value == "value" && member != null && (member.SymbolKind == SymbolKind.Property || member.SymbolKind == SymbolKind.Indexer || member.SymbolKind == SymbolKind.Event) && el.Name == "paramref")
break;
AddXmlIssue(name.ValueSegment.Offset - firstline.Length + 1, name.ValueSegment.Length - 2, string.Format(ctx.TranslateString("Parameter '{0}' not found"), name.Value));

Loading…
Cancel
Save