Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/api-doc-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mdoc
diff options
context:
space:
mode:
authorMiguel de Icaza <miguel@gnome.org>2015-10-02 00:40:35 +0300
committerDuncan Mak <duncanm@microsoft.com>2016-10-08 03:31:04 +0300
commit12fc7b34e3c1954c9b7e7cd7d3e64becd045b97a (patch)
tree1624ffd1d5286def029b2a91149fefc0d03003a4 /mdoc
parentad44ae86d1f08edc521d2def479e1070955cd907 (diff)
Merge pull request #2087 from joelmartinez/mdoc-membername-fixup
[mdoc] Now rewriting incorrect `MemberName`.
Diffstat (limited to 'mdoc')
-rw-r--r--mdoc/Mono.Documentation/monodocer.cs21
1 files changed, 18 insertions, 3 deletions
diff --git a/mdoc/Mono.Documentation/monodocer.cs b/mdoc/Mono.Documentation/monodocer.cs
index dd59da4c..7d54a289 100644
--- a/mdoc/Mono.Documentation/monodocer.cs
+++ b/mdoc/Mono.Documentation/monodocer.cs
@@ -1159,6 +1159,16 @@ class MDocUpdater : MDocCommand
foreach (DocsNodeInfo info in docEnum.GetDocumentationMembers (basefile, type)) {
XmlElement oldmember = info.Node;
MemberReference oldmember2 = info.Member;
+
+ if (info.Member != null && info.Node != null) {
+ // Check for an error condition where the xml MemberName doesn't match the matched member
+ var memberName = GetMemberName (info.Member);
+ var memberAttribute = info.Node.Attributes ["MemberName"];
+ if (memberAttribute == null || (memberAttribute.Value != memberName && memberAttribute.Value.Split (',').Length != memberName.Split (',').Length)) {
+ oldmember.SetAttribute ("MemberName", memberName);
+ }
+ }
+
string sig = oldmember2 != null ? memberFormatters [0].GetDeclaration (oldmember2) : null;
// Interface implementations and overrides are deleted from the docs
@@ -3284,7 +3294,7 @@ class DocumentationEnumerator {
string docName = member.MemberName;
- string[] docTypeParams = GetTypeParameters (docName);
+ string[] docTypeParams = GetTypeParameters (docName, member.TypeParameters);
// If we're using 'magic types', then we might get false positives ... in those cases, we keep searching
MemberReference likelyCandidate = null;
@@ -3394,7 +3404,7 @@ class DocumentationEnumerator {
return likelyCandidate;
}
- static string[] GetTypeParameters (string docName)
+ static string[] GetTypeParameters (string docName, IEnumerable<string> knownParameters)
{
if (docName [docName.Length-1] != '>')
return null;
@@ -3411,7 +3421,12 @@ class DocumentationEnumerator {
} while (--i >= 0);
types.Reverse ();
- return types.ToArray ();
+ var arrayTypes = types.ToArray ();
+
+ if (knownParameters != null && knownParameters.Any () && arrayTypes.Length != knownParameters.Count ())
+ return knownParameters.ToArray ();
+ else
+ return arrayTypes;
}
protected static IEnumerable<MemberReference> GetReflectionMembers (TypeDefinition type, string docName)