diff options
author | Xiao Luo <basehello@icloud.com> | 2021-10-21 13:55:51 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-21 13:55:51 +0300 |
commit | 7c0e36407dbac73203378e1eafd24e140af26565 (patch) | |
tree | b01d1d4a16b0a4c4421474ccaab482a438e7a1bd | |
parent | 9d0792f186a21aa2a802ce5248451b6756be575b (diff) |
Bug 422813: Fix the in parameter modifier not be rendered. (#557)
* Initial commit.
* Update test case.
-rw-r--r-- | mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs | 11 | ||||
-rw-r--r-- | mdoc/mdoc.Test/FormatterTests.cs | 9 | ||||
-rw-r--r-- | mdoc/mdoc.Test/SampleClasses/SomeClass.cs | 7 |
3 files changed, 25 insertions, 2 deletions
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs index 7d0aa7c8..e225e659 100644 --- a/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs +++ b/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs @@ -573,10 +573,18 @@ namespace Mono.Documentation.Updater.Formatters if (parameter.ParameterType is ByReferenceType) { if (parameter.IsOut) + { buf.Append ("out "); + } else - buf.Append ("ref "); + { + if (parameter.HasCustomAttributes && parameter.CustomAttributes.Any (ca => ca.AttributeType.Name == "IsReadOnlyAttribute")) + buf.Append ("in "); + else + buf.Append ("ref "); + } } + if (parameter.HasCustomAttributes) { var isParams = parameter.CustomAttributes.Any (ca => ca.AttributeType.Name == "ParamArrayAttribute"); @@ -596,6 +604,7 @@ namespace Mono.Documentation.Updater.Formatters var ReturnVal = new AttributeFormatter().MakeAttributesValueString(parameter.Constant, parameter.ParameterType); buf.AppendFormat (" = {0}", ReturnVal == "null" ? "default" : ReturnVal); } + return buf; } diff --git a/mdoc/mdoc.Test/FormatterTests.cs b/mdoc/mdoc.Test/FormatterTests.cs index f7b60e4e..01a8f6cf 100644 --- a/mdoc/mdoc.Test/FormatterTests.cs +++ b/mdoc/mdoc.Test/FormatterTests.cs @@ -275,6 +275,15 @@ namespace mdoc.Test } [Test] + public void CSharpInModifier() + { + var member = GetMethod(typeof(SomeClass), m => m.Name == "SomeMethodWithInParameterModifier"); + var formatter = new CSharpFullMemberFormatter(); + var sig = formatter.GetDeclaration(member); + Assert.AreEqual("public void SomeMethodWithInParameterModifier (in string s);", sig); + } + + [Test] public void CSharpTuple() { var member = GetMethod(typeof(NullablesAndTuples), m => m.Name == "TupleReturn"); diff --git a/mdoc/mdoc.Test/SampleClasses/SomeClass.cs b/mdoc/mdoc.Test/SampleClasses/SomeClass.cs index 8687c830..615ab8b2 100644 --- a/mdoc/mdoc.Test/SampleClasses/SomeClass.cs +++ b/mdoc/mdoc.Test/SampleClasses/SomeClass.cs @@ -46,7 +46,12 @@ namespace mdoc.Test.SampleClasses public void SomeMethodWithParameters(SomeClass someClass, int i) { - + + } + + public void SomeMethodWithInParameterModifier(in string s) + { + } public void SomeMethod() |