Skip to content

Commit e6c7528

Browse files
authored
Merge pull request #495 from maopeixia/mpx-mdoc-1.0.1.6
[mdoc] AssemblyVersion missing in some instances
2 parents 517f455 + 63d72ac commit e6c7528

File tree

4 files changed

+65
-2
lines changed

4 files changed

+65
-2
lines changed

mdoc/Mono.Documentation/MDocUpdater.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1542,7 +1542,15 @@ public void DoUpdateType2 (string message, XmlDocument basefile, TypeDefinition
15421542
oldmember.SetAttribute ("MemberName", memberName);
15431543
}
15441544

1545-
AddEiiNameAsAttribute(info.Member, oldmember, memberName);
1545+
AddEiiNameAsAttribute(info.Member, oldmember, memberName);
1546+
1547+
// Check valid Member AssemblyInfo and delete invalid
1548+
if (typeEntry.Framework.IsFirstFrameworkForType(typeEntry))
1549+
{
1550+
var delList = DocUtils.RemoveInvalidAssemblyInfo(info.Node, no_assembly_versions, "Member");
1551+
foreach (var delitem in delList)
1552+
info.Node.RemoveChild(delitem);
1553+
}
15461554
}
15471555

15481556
string sig = oldmember2 != null ? FormatterManager.MemberFormatters[1].GetDeclaration (oldmember2) : null;
@@ -2139,6 +2147,14 @@ public void UpdateType (XmlElement root, TypeDefinition type, FrameworkTypeEntry
21392147
foreach (MemberFormatter f in FormatterManager.TypeFormatters)
21402148
{
21412149
UpdateSignature(f, type, root, typeEntry);
2150+
}
2151+
2152+
// Check valid Type AssemblyInfo and delete invalid
2153+
if (typeEntry.Framework.IsFirstFrameworkForType(typeEntry))
2154+
{
2155+
var delList = DocUtils.RemoveInvalidAssemblyInfo(root, no_assembly_versions, "Type");
2156+
foreach (var delitem in delList)
2157+
delitem.ParentNode.RemoveChild(delitem);
21422158
}
21432159

21442160
AddAssemblyNameToNode (root, type);

mdoc/Mono.Documentation/Updater/DocUtils.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -868,5 +868,25 @@ public static List<GenericParameter> GetGenericParameters(TypeDefinition type)
868868
}
869869
return genericParameters;
870870
}
871+
872+
public static List<System.Xml.XmlNode> RemoveInvalidAssemblyInfo(XmlElement Nodeinfo, bool No_assembly_versions, String Type)
873+
{
874+
List<System.Xml.XmlNode> assemblyDelList = new List<System.Xml.XmlNode>();
875+
if (No_assembly_versions)
876+
return assemblyDelList;
877+
878+
var filter = Type == "Member" ? "AssemblyInfo" : $"/{Type}/AssemblyInfo";
879+
880+
var assemblyFromXml = Nodeinfo
881+
.SelectNodes(filter)
882+
.Cast<XmlElement>();
883+
884+
foreach (var item in assemblyFromXml)
885+
{
886+
if (item.GetElementsByTagName("AssemblyVersion").Count == 0)
887+
assemblyDelList.Add(item);
888+
}
889+
return assemblyDelList;
890+
}
871891
}
872892
}

mdoc/mdoc.Test/MDocUpdaterTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,5 +76,29 @@ public void InternalEIITest()
7676
Assert.AreEqual("System.String mdoc.Test2.InternalEIICalss::mdoc.Test.SampleClasses.InterfaceA.Getstring(System.Int32)", oldmember.FullName);
7777

7878
}
79+
80+
[Test]
81+
public void RemoveInvalidAssembliesInfo()
82+
{
83+
XmlDocument doc = new System.Xml.XmlDocument();
84+
doc.LoadXml(XmlConsts.internalEllXml);
85+
86+
var type = GetType(typeof(mdoc.Test2.InternalEIICalss));
87+
var docEnum = new DocumentationEnumerator();
88+
89+
var delList = DocUtils.RemoveInvalidAssemblyInfo(doc.DocumentElement, false, "Type");
90+
Assert.IsTrue(delList.Count == 1);
91+
92+
foreach (DocsNodeInfo info in docEnum.GetDocumentationMembers(doc, type, FrameworkTypeEntry.Empty))
93+
{
94+
delList.AddRange(DocUtils.RemoveInvalidAssemblyInfo(info.Node, false, "Member"));
95+
}
96+
97+
Assert.IsTrue(delList.Count == 2);
98+
99+
///Note : (The following operation will not be carried out, just prompt)
100+
// foreach (var delitem in delList)
101+
// delitem.ParentNode.RemoveChild(child);
102+
}
79103
}
80104
}

mdoc/mdoc.Test/XmlConsts.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,9 @@ class XmlConsts
312312
<AssemblyName>mdoc.Test</AssemblyName>
313313
<AssemblyVersion>0.0.0.0</AssemblyVersion>
314314
</AssemblyInfo>
315+
<AssemblyInfo>
316+
<AssemblyName>System.Object</AssemblyName>
317+
</AssemblyInfo>
315318
<Base>
316319
<BaseTypeName>System.Object</BaseTypeName>
317320
</Base>
@@ -373,7 +376,7 @@ class XmlConsts
373376
<MemberSignature Language = ""F#"" Value=""abstract member mdoc.Test.SampleClasses.InterfaceA.Getstring : int -&gt; string&#xA;override this.mdoc.Test.SampleClasses.InterfaceA.Getstring : int -&gt; string"" Usage=""internalEIICalss.mdoc.Test.SampleClasses.InterfaceA.Getstring a"" />
374377
<MemberType>Method</MemberType>
375378
<AssemblyInfo>
376-
<AssemblyVersion>0.0.0.0</AssemblyVersion>
379+
<AssemblyName>System.Object</AssemblyName>
377380
</AssemblyInfo>
378381
<ReturnValue>
379382
<ReturnType>System.String</ReturnType>

0 commit comments

Comments
 (0)