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
diff options
context:
space:
mode:
authorMin Huang <huangmin@microsoft.com>2022-02-18 05:04:31 +0300
committerGitHub <noreply@github.com>2022-02-18 05:04:31 +0300
commit7199864055fee49ea45aecf0791b4fa61b4febe1 (patch)
tree4abf9cec7c3edc09bb944831692656e5730f1d3a
parente942ab5362331935a058d2430bb32601aa0baaa2 (diff)
Support readonly members for struct (#609)
* Support readonly members for struct * update
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs6
-rw-r--r--mdoc/mdoc.Test/FormatterTests.cs8
-rw-r--r--mdoc/mdoc.Test/SampleClasses/StructWithReadOnlyMethod.cs13
3 files changed, 26 insertions, 1 deletions
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs
index ff280834..4f4f287a 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs
@@ -503,12 +503,16 @@ namespace Mono.Documentation.Updater.Formatters
{
string modifiers = String.Empty;
if (method.IsStatic) modifiers += " static";
+ TypeDefinition declType = (TypeDefinition)method.DeclaringType;
+ if (declType.IsValueType && DocUtils.HasCustomAttribute(method, Consts.IsReadOnlyAttribute))
+ {
+ modifiers += " readonly";
+ }
if (method.IsVirtual && !method.IsAbstract)
{
if ((method.Attributes & MethodAttributes.NewSlot) != 0) modifiers += " virtual";
else modifiers += " override";
}
- TypeDefinition declType = (TypeDefinition)method.DeclaringType;
if (method.IsAbstract && !declType.IsInterface) modifiers += " abstract";
if (method.IsFinal) modifiers += " sealed";
if (modifiers == " virtual sealed") modifiers = "";
diff --git a/mdoc/mdoc.Test/FormatterTests.cs b/mdoc/mdoc.Test/FormatterTests.cs
index ace21a6a..f33177e7 100644
--- a/mdoc/mdoc.Test/FormatterTests.cs
+++ b/mdoc/mdoc.Test/FormatterTests.cs
@@ -403,6 +403,14 @@ namespace mdoc.Test
Assert.AreEqual("public readonly ref struct ReadOnlyRefStruct", typeSignature);
}
+ [Test]
+ public void CSharpReadOnlyMemberStructTest()
+ {
+ var method = GetMethod(typeof(SampleClasses.StructWithReadOnlyMethod), m => m.Name == "Sum");
+ var methodSignature = formatter.GetDeclaration(method);
+ Assert.AreEqual("public readonly double Sum ();", methodSignature);
+ }
+
#region Helper Methods
string RealTypeName(string name){
switch (name) {
diff --git a/mdoc/mdoc.Test/SampleClasses/StructWithReadOnlyMethod.cs b/mdoc/mdoc.Test/SampleClasses/StructWithReadOnlyMethod.cs
new file mode 100644
index 00000000..baf8f7af
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/StructWithReadOnlyMethod.cs
@@ -0,0 +1,13 @@
+namespace mdoc.Test.SampleClasses
+{
+ public struct StructWithReadOnlyMethod
+ {
+ public double X { get; set; }
+ public double Y { get; set; }
+
+ public readonly double Sum()
+ {
+ return X + Y;
+ }
+ }
+}