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
path: root/mdoc
diff options
context:
space:
mode:
authorJoel Martinez <joelmartinez@gmail.com>2017-09-21 20:53:16 +0300
committerJoel Martinez <joelmartinez@gmail.com>2017-09-22 17:40:18 +0300
commitcc98ded2f88cc7475b3b5903c50850c9790551c5 (patch)
tree93cd6cd93ddab7c9d9acd7989b358c4c9c8419d5 /mdoc
parentd139caf3ed13363f82af0f80df4e63c6699f1e95 (diff)
mdoc: C# signatures now include `params` when appropriate.
Closes #78
Diffstat (limited to 'mdoc')
-rw-r--r--mdoc/Mono.Documentation/monodocer.cs7
-rw-r--r--mdoc/Test/en.expected-fx-import/Mono.DocTest/Widget.xml2
-rw-r--r--mdoc/Test/en.expected-operators/mdoc.Test.SampleClasses/TestClass.xml25
-rw-r--r--mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml2
-rw-r--r--mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml2
-rw-r--r--mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml2
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest/Widget.xml2
-rw-r--r--mdoc/mdoc.Test/FormatterTests.cs9
-rw-r--r--mdoc/mdoc.Test/SampleClasses/TestClass.cs2
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) { }
}
}