Skip to content

Commit 4d420e7

Browse files
authored
[bgen] Add default xml docs for properties that represents fields. (#22651)
1 parent 9244bb0 commit 4d420e7

File tree

8 files changed

+45
-1850
lines changed

8 files changed

+45
-1850
lines changed

src/bgen/DocumentationManager.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,17 @@ public DocumentationManager (string assembly)
2222
}
2323
}
2424

25-
public void WriteDocumentation (StreamWriter sw, int indent, MemberInfo member, Func<XmlNode, XmlNode>? transformNode = null)
25+
public bool WriteDocumentation (StreamWriter sw, int indent, MemberInfo member, Func<XmlNode, XmlNode>? transformNode = null)
2626
{
2727
if (!TryGetDocumentation (member, out var docs, transformNode))
28-
return;
28+
return false;
2929

3030
foreach (var line in docs) {
3131
sw.Write ('\t', indent);
3232
sw.WriteLine (line);
3333
}
34+
35+
return true;
3436
}
3537

3638
public bool TryGetDocumentation (MemberInfo member, [NotNullWhen (true)] out string []? documentation, Func<XmlNode, XmlNode>? transformNode = null)

src/bgen/Generator.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5421,9 +5421,9 @@ public void PrintExperimentalAttribute (ICustomAttributeProvider mi)
54215421
print ($"[Experimental (\"{e.DiagnosticId}\")]");
54225422
}
54235423

5424-
void WriteDocumentation (MemberInfo info, Func<XmlNode, XmlNode>? transformNode = null)
5424+
bool WriteDocumentation (MemberInfo info, Func<XmlNode, XmlNode>? transformNode = null)
54255425
{
5426-
DocumentationManager.WriteDocumentation (sw, indent, info, transformNode);
5426+
return DocumentationManager.WriteDocumentation (sw, indent, info, transformNode);
54275427
}
54285428

54295429
public bool TryComputeLibraryName (string attributeLibraryName, Type type, out string library_name, out string library_path)
@@ -6154,7 +6154,9 @@ public void Generate (Type type)
61546154
print ("static {0}? _{1};", fieldTypeName, field_pi.Name);
61556155
}
61566156

6157-
WriteDocumentation (field_pi);
6157+
if (!WriteDocumentation (field_pi) && BindingTouch.SupportsXmlDocumentation) {
6158+
print ($"/// <summary>Represents the value associated with the constant '{fieldAttr.SymbolName}'.</summary>");
6159+
}
61586160
PrintAttributes (field_pi, preserve: true, advice: true);
61596161
PrintObsoleteAttributes (field_pi);
61606162
print ("[Field (\"{0}\", \"{1}\")]", fieldAttr.SymbolName, library_path ?? library_name);

tests/cecil-tests/Documentation.KnownFailures.txt

Lines changed: 0 additions & 1845 deletions
Large diffs are not rendered by default.

tests/generator/ExpectedXmlDocs.MacCatalyst.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,12 @@
795795
Summary for TG1.TGProperty
796796
</summary>
797797
</member>
798+
<member name="P:XmlDocumentation.TOuter.TInner.TOuterInnerField">
799+
<summary>TOuter.TInner.Field</summary>
800+
</member>
801+
<member name="P:XmlDocumentation.TOuter.TInner.TOuterInnerField2">
802+
<summary>Represents the value associated with the constant 'TOuterInnerField2'.</summary>
803+
</member>
798804
<member name="T:XmlDocumentation.OptionsA">
799805
<summary>Summary for OptionsA.</summary>
800806
</member>

tests/generator/ExpectedXmlDocs.iOS.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,12 @@
795795
Summary for TG1.TGProperty
796796
</summary>
797797
</member>
798+
<member name="P:XmlDocumentation.TOuter.TInner.TOuterInnerField">
799+
<summary>TOuter.TInner.Field</summary>
800+
</member>
801+
<member name="P:XmlDocumentation.TOuter.TInner.TOuterInnerField2">
802+
<summary>Represents the value associated with the constant 'TOuterInnerField2'.</summary>
803+
</member>
798804
<member name="T:XmlDocumentation.TypeWithApparance">
799805
<summary>
800806
Summary for TypeWithApparance

tests/generator/ExpectedXmlDocs.macOS.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,12 @@
795795
Summary for TG1.TGProperty
796796
</summary>
797797
</member>
798+
<member name="P:XmlDocumentation.TOuter.TInner.TOuterInnerField">
799+
<summary>TOuter.TInner.Field</summary>
800+
</member>
801+
<member name="P:XmlDocumentation.TOuter.TInner.TOuterInnerField2">
802+
<summary>Represents the value associated with the constant 'TOuterInnerField2'.</summary>
803+
</member>
798804
<member name="T:XmlDocumentation.OptionsA">
799805
<summary>Summary for OptionsA.</summary>
800806
</member>

tests/generator/ExpectedXmlDocs.tvOS.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,12 @@
795795
Summary for TG1.TGProperty
796796
</summary>
797797
</member>
798+
<member name="P:XmlDocumentation.TOuter.TInner.TOuterInnerField">
799+
<summary>TOuter.TInner.Field</summary>
800+
</member>
801+
<member name="P:XmlDocumentation.TOuter.TInner.TOuterInnerField2">
802+
<summary>Represents the value associated with the constant 'TOuterInnerField2'.</summary>
803+
</member>
798804
<member name="T:XmlDocumentation.OptionsA">
799805
<summary>Summary for OptionsA.</summary>
800806
</member>

tests/generator/tests/xmldocs.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,16 @@ interface TClassDelegate {
287287
}
288288

289289
interface ITClassDelegate { }
290+
291+
class TOuter {
292+
[Static]
293+
interface TInner {
294+
/// <summary>TOuter.TInner.Field</summary>
295+
[Field ("TOuterInnerField", "__Internal")]
296+
NSString TOuterInnerField { get; }
297+
// no xml comment, should get a default value
298+
[Field ("TOuterInnerField2", "__Internal")]
299+
NSString TOuterInnerField2 { get; }
300+
}
301+
}
290302
}

0 commit comments

Comments
 (0)