Skip to content

Commit 63d72ac

Browse files
committed
[mdoc] AssemblyVersion missing in some instances
1 parent adfd1dd commit 63d72ac

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
@@ -1633,7 +1633,15 @@ public void DoUpdateType2 (string message, XmlDocument basefile, TypeDefinition
16331633
oldmember.SetAttribute ("MemberName", memberName);
16341634
}
16351635

1636-
AddEiiNameAsAttribute(info.Member, oldmember, memberName);
1636+
AddEiiNameAsAttribute(info.Member, oldmember, memberName);
1637+
1638+
// Check valid Member AssemblyInfo and delete invalid
1639+
if (typeEntry.Framework.IsFirstFrameworkForType(typeEntry))
1640+
{
1641+
var delList = DocUtils.RemoveInvalidAssemblyInfo(info.Node, no_assembly_versions, "Member");
1642+
foreach (var delitem in delList)
1643+
info.Node.RemoveChild(delitem);
1644+
}
16371645
}
16381646

16391647
string sig = oldmember2 != null ? memberFormatters[1].GetDeclaration (oldmember2) : null;
@@ -2230,6 +2238,14 @@ public void UpdateType (XmlElement root, TypeDefinition type, FrameworkTypeEntry
22302238
foreach (MemberFormatter f in typeFormatters)
22312239
{
22322240
UpdateSignature(f, type, root, typeEntry);
2241+
}
2242+
2243+
// Check valid Type AssemblyInfo and delete invalid
2244+
if (typeEntry.Framework.IsFirstFrameworkForType(typeEntry))
2245+
{
2246+
var delList = DocUtils.RemoveInvalidAssemblyInfo(root, no_assembly_versions, "Type");
2247+
foreach (var delitem in delList)
2248+
delitem.ParentNode.RemoveChild(delitem);
22332249
}
22342250

22352251
AddAssemblyNameToNode (root, type);

mdoc/Mono.Documentation/Updater/DocUtils.cs

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

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)