Skip to content

Commit f49680e

Browse files
authored
Merge pull request #681 from mono/develop
add tag SetMethodName
2 parents 01efe58 + ecab727 commit f49680e

File tree

8 files changed

+111
-26
lines changed

8 files changed

+111
-26
lines changed

mdoc/Consts.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ namespace Mono.Documentation
33
{
44
public static class Consts
55
{
6-
public static string MonoVersion = "5.9.2.4";
6+
public static string MonoVersion = "5.9.3";
77
public const string DocId = "DocId";
88
public const string CppCli = "C++ CLI";
99
public const string CppCx = "C++ CX";

mdoc/Mono.Documentation/MDocUpdater.cs

+55-22
Original file line numberDiff line numberDiff line change
@@ -2411,66 +2411,98 @@ internal static IEnumerable<T> Sort<T> (IEnumerable<T> list)
24112411
return l;
24122412
}
24132413

2414-
private void UpdateMember (DocsNodeInfo info, FrameworkTypeEntry typeEntry, Dictionary<string, List<MemberReference>> implementedMembers, IEnumerable<Eiimembers> eiiMenbers)
2414+
private void UpdateMember(DocsNodeInfo info, FrameworkTypeEntry typeEntry, Dictionary<string, List<MemberReference>> implementedMembers, IEnumerable<Eiimembers> eiiMenbers)
24152415
{
24162416
XmlElement me = (XmlElement)info.Node;
24172417
MemberReference mi = info.Member;
2418-
typeEntry.ProcessMember (mi);
2418+
typeEntry.ProcessMember(mi);
24192419

24202420

2421-
var memberName = GetMemberName (mi);
2422-
me.SetAttribute ("MemberName", memberName);
2421+
var memberName = GetMemberName(mi);
2422+
me.SetAttribute("MemberName", memberName);
24232423

2424-
WriteElementText (me, "MemberType", GetMemberType (mi));
2424+
WriteElementText(me, "MemberType", GetMemberType(mi));
2425+
MakeSetMethodName(typeEntry, me, mi);
24252426
AddImplementedMembers(typeEntry, mi, implementedMembers, me, eiiMenbers);
24262427

24272428
if (!no_assembly_versions)
24282429
{
24292430
if (!IsMultiAssembly)
2430-
UpdateAssemblyVersions (me, mi, true);
2431+
UpdateAssemblyVersions(me, mi, true);
24312432
else
24322433
{
2433-
var node = AddAssemblyNameToNode (me, mi.Module, mi.DeclaringType.Resolve());
2434+
var node = AddAssemblyNameToNode(me, mi.Module, mi.DeclaringType.Resolve());
24342435

24352436
if (typeEntry.IsMemberOnFirstFramework(mi))
24362437
{
24372438
node.SelectNodes("AssemblyVersion").Cast<XmlNode>().ToList().ForEach(e => e.ParentNode.RemoveChild(e));
24382439
}
24392440

2440-
UpdateAssemblyVersionForAssemblyInfo (node, me, new[] { GetAssemblyVersion (mi.Module.Assembly) }, add: true);
2441+
UpdateAssemblyVersionForAssemblyInfo(node, me, new[] { GetAssemblyVersion(mi.Module.Assembly) }, add: true);
24412442
}
24422443
}
24432444
else
24442445
{
2445-
ClearElement (me, "AssemblyInfo");
2446+
ClearElement(me, "AssemblyInfo");
24462447
}
24472448

2448-
MakeMemberAttributes (me, mi, typeEntry);
2449+
MakeMemberAttributes(me, mi, typeEntry);
24492450

2450-
MakeReturnValue (typeEntry, me, mi, MDocUpdater.HasDroppedNamespace (mi));
2451+
MakeReturnValue(typeEntry, me, mi, MDocUpdater.HasDroppedNamespace(mi));
24512452
if (mi is MethodReference)
24522453
{
24532454
MethodReference mb = (MethodReference)mi;
2454-
if (mb.IsGenericMethod ())
2455-
MakeTypeParameters (typeEntry, me, mb.GenericParameters, mi, MDocUpdater.HasDroppedNamespace (mi));
2455+
if (mb.IsGenericMethod())
2456+
MakeTypeParameters(typeEntry, me, mb.GenericParameters, mi, MDocUpdater.HasDroppedNamespace(mi));
24562457
}
24572458
bool fxAlternateTriggered = false;
2458-
MakeParameters (me, mi, typeEntry, ref fxAlternateTriggered, MDocUpdater.HasDroppedNamespace (mi));
2459+
MakeParameters(me, mi, typeEntry, ref fxAlternateTriggered, MDocUpdater.HasDroppedNamespace(mi));
24592460

24602461
string fieldValue;
2461-
if (mi is FieldDefinition && GetFieldConstValue ((FieldDefinition)mi, out fieldValue))
2462-
WriteElementText (me, "MemberValue", fieldValue);
2462+
if (mi is FieldDefinition && GetFieldConstValue((FieldDefinition)mi, out fieldValue))
2463+
WriteElementText(me, "MemberValue", fieldValue);
2464+
2465+
info.Node = WriteElement(me, "Docs");
2466+
MakeDocNode(info, typeEntry.Framework.Importers, typeEntry);
24632467

2464-
info.Node = WriteElement (me, "Docs");
2465-
MakeDocNode (info, typeEntry.Framework.Importers, typeEntry);
2466-
24672468
foreach (MemberFormatter f in FormatterManager.MemberFormatters)
24682469
{
2469-
UpdateSignature (f, mi, me, typeEntry, implementedMembers);
2470+
UpdateSignature(f, mi, me, typeEntry, implementedMembers);
24702471
}
24712472

2472-
OrderMemberNodes (me, me.ChildNodes);
2473-
UpdateExtensionMethods (me, info);
2473+
OrderMemberNodes(me, me.ChildNodes);
2474+
UpdateExtensionMethods(me, info);
2475+
}
2476+
2477+
public static void MakeSetMethodName(FrameworkTypeEntry typeEntry, XmlElement me, MemberReference mi)
2478+
{
2479+
if (mi is PropertyDefinition)
2480+
{
2481+
var setMethodName = ((PropertyDefinition)mi).SetMethod?.Name.Split('.').LastOrDefault();
2482+
if (setMethodName != null && !setMethodName.StartsWith("set"))
2483+
{
2484+
DocUtils.AddElementWithFx(
2485+
typeEntry,
2486+
parent: me,
2487+
isFirst: typeEntry.IsMemberOnFirstFramework(mi),
2488+
isLast: typeEntry.IsMemberOnLastFramework(mi),
2489+
allfxstring: new Lazy<string>(() => typeEntry.AllFrameworkStringForMember(mi)),
2490+
clear: parent =>
2491+
{
2492+
ClearElement(parent, "SetMethodName");
2493+
},
2494+
findExisting: parent =>
2495+
{
2496+
return parent.SelectSingleNode($"Member/SetMethodName") as XmlElement;
2497+
},
2498+
addItem: parent =>
2499+
{
2500+
var newNode = WriteElementText(parent, "SetMethodName", setMethodName, forceNewElement: false);
2501+
2502+
return newNode;
2503+
});
2504+
}
2505+
}
24742506
}
24752507

24762508
private static void UpdateSignature(MemberFormatter formatter, TypeDefinition type, XmlElement xmlElement, FrameworkTypeEntry typeEntry)
@@ -2913,6 +2945,7 @@ static void AddXmlNode (XmlElement[] relevant, Func<XmlElement, bool> valueMatch
29132945
"Metadata",
29142946
"MemberSignature",
29152947
"MemberType",
2948+
"SetMethodName",
29162949
"Implements",
29172950
"AssemblyInfo",
29182951
"Attributes",

mdoc/Resources/monodoc-ecma.xsd

+11
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,16 @@ add masterdoc support?
8989
</xs:simpleContent>
9090
</xs:complexType>
9191
</xs:element>
92+
93+
<xs:element name="SetMethodName">
94+
<xs:complexType>
95+
<xs:simpleContent>
96+
<xs:extension base="xs:string">
97+
<xs:attribute name="FrameworkAlternate" use="optional" />
98+
</xs:extension>
99+
</xs:simpleContent>
100+
</xs:complexType>
101+
</xs:element>
92102

93103
<xs:element name="Meta">
94104
<xs:complexType>
@@ -531,6 +541,7 @@ add masterdoc support?
531541
<xs:element ref="Metadata" minOccurs="0" maxOccurs="1" />
532542
<xs:element ref="MemberSignature" minOccurs="1" maxOccurs="unbounded" />
533543
<xs:element ref="MemberType" maxOccurs="1" />
544+
<xs:element ref="SetMethodName" minOccurs="0" maxOccurs="1" />
534545
<xs:element ref="Implements" minOccurs="0" maxOccurs="1" />
535546
<xs:element ref="AssemblyInfo" minOccurs="0" maxOccurs="1" />
536547
<xs:element ref="Attributes" minOccurs="0" maxOccurs="1" />

mdoc/mdoc.Test/MDocUpdaterTests.cs

+26
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,32 @@ public void RemoveInvalidAssembliesInfo()
125125
// delitem.ParentNode.RemoveChild(child);
126126
}
127127

128+
[Test]
129+
public void MakeSetMethodName_Test()
130+
{
131+
List<FrameworkEntry> entries = new List<FrameworkEntry>();
132+
FrameworkEntry frameworkEntry = new FrameworkEntry(entries, entries);
133+
frameworkEntry.Name = "winui-2.8";
134+
FrameworkTypeEntry typeEntry = new FrameworkTypeEntry(frameworkEntry);
135+
136+
var doc = new XmlDocument();
137+
doc.LoadXml(XmlConsts.SetMethodName);
138+
139+
var member = GetType(typeof(mdoc.Test2.EiiImplementClass)).Properties.FirstOrDefault(t => t.FullName == "System.String mdoc.Test2.EiiImplementClass::init()");
140+
MDocUpdater.MakeSetMethodName(typeEntry, doc.DocumentElement, member);
141+
var node = doc.SelectSingleNode($"Member/SetMethodName");
142+
Assert.IsNull(node);
143+
144+
member = GetType(typeof(mdoc.Test2.EiiImplementClass)).Properties.FirstOrDefault(t => t.FullName == "System.String mdoc.Test2.EiiImplementClass::source()");
145+
member.SetMethod.Name = "put_Source";
146+
MDocUpdater.MakeSetMethodName(typeEntry, doc.DocumentElement, member);
147+
node = doc.SelectSingleNode($"Member/SetMethodName");
148+
Assert.IsNotNull(node);
149+
Assert.AreEqual(node.InnerText, member.SetMethod.Name);
150+
Assert.AreEqual(node.Attributes["FrameworkAlternate"].Value, frameworkEntry.Name);
151+
152+
}
153+
128154
[Test]
129155
public void UpdateToRight_MethodInterface_Test()
130156
{

mdoc/mdoc.Test/SampleClasses/EiiImplementclass.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class EiiImplementClass : Interface_A,Interface_B
1515

1616
public int no { get; }
1717
int Interface_B.no { get; }
18-
18+
1919
public string GetNo() => "1";
2020
string Interface_A.GetNo() => "7";
2121

@@ -31,5 +31,9 @@ event EventHandler<EventArgs> Interface_B.ItemChanged
3131
remove { }
3232
}
3333

34+
public string source { get; set;}
35+
36+
public string init { get; init;}
37+
3438
}
3539
}

mdoc/mdoc.Test/XmlConsts.cs

+11
Original file line numberDiff line numberDiff line change
@@ -706,5 +706,16 @@ class XmlConsts
706706
</Type>
707707
";
708708
#endregion
709+
710+
#region
711+
public const string SetMethodName = @"<Member MemberName=""Source"">
712+
<MemberSignature Language=""C#"" Value=""public Windows.UI.Xaml.Media.ImageSource Source { get; set; }"" />
713+
<MemberSignature Language=""ILAsm"" Value="".property instance class Windows.UI.Xaml.Media.ImageSource Source"" />
714+
<MemberSignature Language=""DocId"" Value=""P:Microsoft.UI.Xaml.Controls.ImageIcon.Source"" />
715+
<MemberSignature Language=""VB.NET"" Value=""Public Property Source As ImageSource"" />
716+
<MemberSignature Language=""F#"" Value=""member this.Source : Windows.UI.Xaml.Media.ImageSource with get, set"" Usage=""Source"" />
717+
<MemberType>Property</MemberType>
718+
</Member>";
719+
#endregion
709720
}
710721
}

mdoc/mdoc.Test/mdoc.Test.FSharp/Collections.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ let f (x:Map<int, int>) = 0
99
let f2 (x:seq<int>) = 0
1010

1111
type MDocInterface<'key> = interface
12-
end
12+
end
1313

1414
type MDocTestMap<'Key, 'Value> = class
1515
interface MDocInterface<KeyValuePair<'Key, 'Value>>

mdoc/mdoc.nuspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package >
33
<metadata>
44
<id>mdoc</id>
5-
<version>5.9.2.4</version>
5+
<version>5.9.3</version>
66
<title>mdoc</title>
77
<authors>Microsoft</authors>
88
<owners>Microsoft</owners>

0 commit comments

Comments
 (0)