diff options
author | Joel Martinez <joelmartinez@gmail.com> | 2017-09-21 20:53:16 +0300 |
---|---|---|
committer | Joel Martinez <joelmartinez@gmail.com> | 2017-09-22 17:40:18 +0300 |
commit | cc98ded2f88cc7475b3b5903c50850c9790551c5 (patch) | |
tree | 93cd6cd93ddab7c9d9acd7989b358c4c9c8419d5 /mdoc | |
parent | d139caf3ed13363f82af0f80df4e63c6699f1e95 (diff) |
mdoc: C# signatures now include `params` when appropriate.
Closes #78
Diffstat (limited to 'mdoc')
9 files changed, 47 insertions, 6 deletions
diff --git a/mdoc/Mono.Documentation/monodocer.cs b/mdoc/Mono.Documentation/monodocer.cs index bf76e6c1..7c6e800e 100644 --- a/mdoc/Mono.Documentation/monodocer.cs +++ b/mdoc/Mono.Documentation/monodocer.cs @@ -424,7 +424,7 @@ class MDocUpdater : MDocCommand } public static bool IsInAssemblies(string name) { - return Instance.assemblies.Any(a => a.Contains(name)); + return Instance?.assemblies != null ? Instance.assemblies.Any(a => a.Contains(name)) : true; } void AddImporter (string path) @@ -5763,6 +5763,11 @@ public class CSharpFullMemberFormatter : MemberFormatter { else buf.Append ("ref "); } + if (parameter.HasCustomAttributes) { + var isParams = parameter.CustomAttributes.Any (ca => ca.AttributeType.Name == "ParamArrayAttribute"); + if (isParams) + buf.AppendFormat ("params "); + } buf.Append (GetTypeName (parameter.ParameterType, new DynamicParserContext (parameter))).Append (" "); buf.Append (parameter.Name); if (parameter.HasDefault && parameter.IsOptional && parameter.HasConstant) { diff --git a/mdoc/Test/en.expected-fx-import/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected-fx-import/Mono.DocTest/Widget.xml index 850b6a14..3fabedad 100644 --- a/mdoc/Test/en.expected-fx-import/Mono.DocTest/Widget.xml +++ b/mdoc/Test/en.expected-fx-import/Mono.DocTest/Widget.xml @@ -656,7 +656,7 @@ </Docs> </Member> <Member MemberName="M6"> - <MemberSignature Language="C#" Value="protected void M6 (int i, object[] args);" /> + <MemberSignature Language="C#" Value="protected void M6 (int i, params object[] args);" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> diff --git a/mdoc/Test/en.expected-operators/mdoc.Test.SampleClasses/TestClass.xml b/mdoc/Test/en.expected-operators/mdoc.Test.SampleClasses/TestClass.xml index 34a7a073..58d53f12 100644 --- a/mdoc/Test/en.expected-operators/mdoc.Test.SampleClasses/TestClass.xml +++ b/mdoc/Test/en.expected-operators/mdoc.Test.SampleClasses/TestClass.xml @@ -27,6 +27,31 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="DoSomethingWithParams"> + <MemberSignature Language="C#" Value="public void DoSomethingWithParams (params int[] values);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void DoSomethingWithParams(int32[] values) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="values" Type="System.Int32[]"> + <Attributes> + <Attribute> + <AttributeName>System.ParamArray</AttributeName> + </Attribute> + </Attributes> + </Parameter> + </Parameters> + <Docs> + <param name="values">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> <Member MemberName="op_Addition"> <MemberSignature Language="C#" Value="public static mdoc.Test.SampleClasses.TestClass operator + (mdoc.Test.SampleClasses.TestClass c1, mdoc.Test.SampleClasses.TestClass c2);" /> <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class mdoc.Test.SampleClasses.TestClass op_Addition(class mdoc.Test.SampleClasses.TestClass c1, class mdoc.Test.SampleClasses.TestClass c2) cil managed" /> diff --git a/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml index 3581a598..e4108a35 100644 --- a/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml +++ b/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml @@ -858,7 +858,7 @@ </Docs> </Member> <Member MemberName="M6"> - <MemberSignature Language="C#" Value="protected void M6 (int i, object[] args);" /> + <MemberSignature Language="C#" Value="protected void M6 (int i, params object[] args);" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" /> <MemberType>Method</MemberType> <ReturnValue> diff --git a/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml index 7b8ad7ce..eb481223 100644 --- a/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml +++ b/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml @@ -992,7 +992,7 @@ </Docs> </Member> <Member MemberName="M6"> - <MemberSignature Language="C#" Value="protected void M6 (int i, object[] args);" /> + <MemberSignature Language="C#" Value="protected void M6 (int i, params object[] args);" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> diff --git a/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml index 102be24b..c6865957 100644 --- a/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml +++ b/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml @@ -972,7 +972,7 @@ </Docs> </Member> <Member MemberName="M6"> - <MemberSignature Language="C#" Value="protected void M6 (int i, object[] args);" /> + <MemberSignature Language="C#" Value="protected void M6 (int i, params object[] args);" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> diff --git a/mdoc/Test/en.expected/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected/Mono.DocTest/Widget.xml index 64323700..231dc9a0 100644 --- a/mdoc/Test/en.expected/Mono.DocTest/Widget.xml +++ b/mdoc/Test/en.expected/Mono.DocTest/Widget.xml @@ -943,7 +943,7 @@ </Docs> </Member> <Member MemberName="M6"> - <MemberSignature Language="C#" Value="protected void M6 (int i, object[] args);" /> + <MemberSignature Language="C#" Value="protected void M6 (int i, params object[] args);" /> <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> diff --git a/mdoc/mdoc.Test/FormatterTests.cs b/mdoc/mdoc.Test/FormatterTests.cs index b86bed31..d29a6e07 100644 --- a/mdoc/mdoc.Test/FormatterTests.cs +++ b/mdoc/mdoc.Test/FormatterTests.cs @@ -183,6 +183,15 @@ namespace mdoc.Test Assert.AreEqual ("System.ValueType*", result); } + [Test] + public void Params() + { + var member = GetMethod<TestClass> (m => m.Name == "DoSomethingWithParams"); + var formatter = new CSharpMemberFormatter (); + var sig = formatter.GetDeclaration (member); + Assert.AreEqual ("public void DoSomethingWithParams (params int[] values);", sig); + } + #region Helper Methods string RealTypeName(string name){ switch (name) { diff --git a/mdoc/mdoc.Test/SampleClasses/TestClass.cs b/mdoc/mdoc.Test/SampleClasses/TestClass.cs index c8bb276a..71b25694 100644 --- a/mdoc/mdoc.Test/SampleClasses/TestClass.cs +++ b/mdoc/mdoc.Test/SampleClasses/TestClass.cs @@ -42,5 +42,7 @@ namespace mdoc.Test.SampleClasses public static implicit operator TestClass (TestClassTwo c1) { return new TestClass (); } public static explicit operator int (TestClass c1) { return 0; } public static explicit operator TestClass (int c1) { return new TestClass (); } + + public void DoSomethingWithParams (params int[] values) { } } } |