diff options
author | Min Huang <huangmin@microsoft.com> | 2022-02-18 05:04:31 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-18 05:04:31 +0300 |
commit | 7199864055fee49ea45aecf0791b4fa61b4febe1 (patch) | |
tree | 4abf9cec7c3edc09bb944831692656e5730f1d3a | |
parent | e942ab5362331935a058d2430bb32601aa0baaa2 (diff) |
Support readonly members for struct (#609)
* Support readonly members for struct
* update
-rw-r--r-- | mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs | 6 | ||||
-rw-r--r-- | mdoc/mdoc.Test/FormatterTests.cs | 8 | ||||
-rw-r--r-- | mdoc/mdoc.Test/SampleClasses/StructWithReadOnlyMethod.cs | 13 |
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; + } + } +} |