diff options
author | Joel Martinez <joelmartinez@gmail.com> | 2017-09-26 00:02:38 +0300 |
---|---|---|
committer | Joel Martinez <joelmartinez@gmail.com> | 2017-09-26 17:07:35 +0300 |
commit | f51d2af552e63de7d72555a5c61d9c2a28b7faa0 (patch) | |
tree | f1216de7785a096e833d1e05b2c2f0df3a74658c /mdoc | |
parent | ff03c7b41d441ebd7a5a73e5d02c8ca5c5590218 (diff) |
mdoc: IL signatures now reflect ref, in, and out modifiers.
Closes #118
Diffstat (limited to 'mdoc')
22 files changed, 75 insertions, 24 deletions
diff --git a/mdoc/Consts.cs b/mdoc/Consts.cs index 43f87e32..666e14ee 100644 --- a/mdoc/Consts.cs +++ b/mdoc/Consts.cs @@ -3,6 +3,6 @@ namespace Mono.Documentation { public static class Consts { - public static string MonoVersion = "5.0.0.24"; + public static string MonoVersion = "5.0.0.25"; } } diff --git a/mdoc/Makefile b/mdoc/Makefile index 0ac26278..5bb56f29 100644 --- a/mdoc/Makefile +++ b/mdoc/Makefile @@ -360,8 +360,8 @@ check-monodocer-importecmadoc: -o Test/en.actual Test/DocTest.dll $(DIFF) Test/en.expected.importecmadoc Test/en.actual -.PHONY: check-monodocer-import-fx -check-monodocer-import-fx: Test/DocTest.dll-v1 Test/DocTest-DropNS-classic-secondary.dll Test/DocTest-DropNS-classic.dll +.PHONY: check-monodocer-import-fx-work +check-monodocer-import-fx-work: Test/DocTest.dll-v1 Test/DocTest-DropNS-classic-secondary.dll Test/DocTest-DropNS-classic.dll rm -Rf Test/en.actual rm -Rf Test/fx-import mkdir Test/fx-import @@ -375,21 +375,36 @@ check-monodocer-import-fx: Test/DocTest.dll-v1 Test/DocTest-DropNS-classic-secon cp Test/DocTest.xml Test/fx-import/TestEcmaDocs.xml cp Test/CLILibraryTypes.dtd Test/fx-import/ cp Test/fx-import-configuration.xml Test/fx-import/frameworks.xml - #$(MONO) $(PROGRAM) fx-bootstrap Test/fx-import $(MONO) $(PROGRAM) update -o Test/en.actual -frameworks Test/fx-import + +.PHONY: check-monodocer-import-fx +check-monodocer-import-fx: check-monodocer-import-fx-work $(DIFF) Test/en.expected-fx-import Test/en.actual +.PHONY: check-monodocer-import-fx-update +check-monodocer-import-fx-update: check-monodocer-import-fx-work + rm -Rf Test/en.expected-fx-import + mv Test/en.actual Test/en.expected-fx-import + Test/TestClass.dll: $(CSCOMPILE) $(TEST_CSCFLAGS) -unsafe -debug -optimize -target:library -out:$@ mdoc.Test/SampleClasses/Test*.cs -.PHONY: check-monodocer-operators -check-monodocer-operators: Test/TestClass.dll +.PHONY: check-monodocer-operators-work +check-monodocer-operators-work: Test/TestClass.dll rm -Rf Test/en.actual $(MONO) $(PROGRAM) update Test/TestClass.dll -o Test/en.actual cp mdoc.Test/SampleClasses/TestClass-OldOpSig.xml Test/en.actual/mdoc.Test.SampleClasses/TestClass.xml $(MONO) $(PROGRAM) update Test/TestClass.dll -o Test/en.actual + +.PHONY: check-monodocer-operators +check-monodocer-operators: check-monodocer-operators-work $(DIFF) Test/en.expected-operators Test/en.actual +.PHONY: check-monodocer-operators-update +check-monodocer-operators-update: check-monodocer-operators-work + rm -Rf Test/en.expected-operators + mv Test/en.actual Test/en.expected-operators + check-mdoc-export-html-update: find Test/html.expected -name \*.html -exec rm "{}" \; $(MONO) $(PROGRAM) export-html -o Test/html.expected \ diff --git a/mdoc/Mono.Documentation/monodocer.cs b/mdoc/Mono.Documentation/monodocer.cs index 7c6e800e..b7c8520f 100644 --- a/mdoc/Mono.Documentation/monodocer.cs +++ b/mdoc/Mono.Documentation/monodocer.cs @@ -5054,12 +5054,18 @@ public class ILFullMemberFormatter : MemberFormatter { buf.Append ('('); bool first = true; for (int i = 0; i < method.Parameters.Count; ++i) { + var param = method.Parameters[i]; if (!first) buf.Append (", "); first = false; - _AppendTypeName (buf, method.Parameters [i].ParameterType, new DynamicParserContext (method.Parameters [i])); + + if (param.IsOut) buf.Append ("[out] "); + else if (param.IsIn) buf.Append ("[in]"); + + _AppendTypeName (buf, param.ParameterType, new DynamicParserContext (param)); + if (param.ParameterType.IsByReference) buf.Append ("&"); buf.Append (' '); - buf.Append (method.Parameters [i].Name); + buf.Append (param.Name); } buf.Append (')'); if (method.IsIL) diff --git a/mdoc/Test/en.expected-fx-import/Mono.DocTest.Generic/MyList`1.xml b/mdoc/Test/en.expected-fx-import/Mono.DocTest.Generic/MyList`1.xml index 2f0b9d44..57096b5a 100644 --- a/mdoc/Test/en.expected-fx-import/Mono.DocTest.Generic/MyList`1.xml +++ b/mdoc/Test/en.expected-fx-import/Mono.DocTest.Generic/MyList`1.xml @@ -120,7 +120,7 @@ </Member> <Member MemberName="RefMethod<U>"> <MemberSignature Language="C#" Value="public void RefMethod<U> (ref T t, ref U u);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T t, !!U u) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T& t, !!U& u) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyName>DocTest</AssemblyName> 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 3fabedad..999b01ae 100644 --- a/mdoc/Test/en.expected-fx-import/Mono.DocTest/Widget.xml +++ b/mdoc/Test/en.expected-fx-import/Mono.DocTest/Widget.xml @@ -510,7 +510,7 @@ </Member> <Member MemberName="M1"> <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, float32 f, valuetype Mono.DocTest.DocValueType v) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, [out] float32& f, valuetype Mono.DocTest.DocValueType& v) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyName>DocTest</AssemblyName> diff --git a/mdoc/Test/en.expected-fx-import/System/Array.xml b/mdoc/Test/en.expected-fx-import/System/Array.xml index e3510ab0..ab04cd84 100644 --- a/mdoc/Test/en.expected-fx-import/System/Array.xml +++ b/mdoc/Test/en.expected-fx-import/System/Array.xml @@ -84,7 +84,7 @@ </Member> <Member MemberName="Resize<T>"> <MemberSignature Language="C#" Value="public static void Resize<T> (ref T[] array, int newSize);" /> - <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[] array, int32 newSize) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[]& array, int32 newSize) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyName>DocTest</AssemblyName> 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 58d53f12..c7e71d02 100644 --- a/mdoc/Test/en.expected-operators/mdoc.Test.SampleClasses/TestClass.xml +++ b/mdoc/Test/en.expected-operators/mdoc.Test.SampleClasses/TestClass.xml @@ -644,5 +644,26 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="RefAndOut"> + <MemberSignature Language="C#" Value="public void RefAndOut (ref int a, out int b);" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefAndOut(int32& a, [out] int32& b) cil managed" /> + <MemberType>Method</MemberType> + <AssemblyInfo> + <AssemblyVersion>0.0.0.0</AssemblyVersion> + </AssemblyInfo> + <ReturnValue> + <ReturnType>System.Void</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="a" Type="System.Int32&" RefType="ref" /> + <Parameter Name="b" Type="System.Int32&" RefType="out" /> + </Parameters> + <Docs> + <param name="a">To be added.</param> + <param name="b">To be added.</param> + <summary>To be added.</summary> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/mdoc/Test/en.expected.delete/Mono.DocTest.Generic/MyList`1.xml b/mdoc/Test/en.expected.delete/Mono.DocTest.Generic/MyList`1.xml index 548d09c6..148f6f14 100644 --- a/mdoc/Test/en.expected.delete/Mono.DocTest.Generic/MyList`1.xml +++ b/mdoc/Test/en.expected.delete/Mono.DocTest.Generic/MyList`1.xml @@ -98,7 +98,7 @@ </Member> <Member MemberName="RefMethod<U>"> <MemberSignature Language="C#" Value="public void RefMethod<U> (ref T t, ref U u);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T t, !!U u) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T& t, !!U& u) cil managed" /> <MemberType>Method</MemberType> <ReturnValue> <ReturnType>System.Void</ReturnType> diff --git a/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml index e4108a35..4875ed80 100644 --- a/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml +++ b/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml @@ -737,7 +737,7 @@ </Member> <Member MemberName="M1"> <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, float32 f, valuetype Mono.DocTest.DocValueType v) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, [out] float32& f, valuetype Mono.DocTest.DocValueType& v) cil managed" /> <MemberType>Method</MemberType> <Attributes> <Attribute> diff --git a/mdoc/Test/en.expected.delete/System/Array.xml b/mdoc/Test/en.expected.delete/System/Array.xml index c38f7249..62486742 100644 --- a/mdoc/Test/en.expected.delete/System/Array.xml +++ b/mdoc/Test/en.expected.delete/System/Array.xml @@ -75,7 +75,7 @@ </Member> <Member MemberName="Resize<T>"> <MemberSignature Language="C#" Value="public static void Resize<T> (ref T[] array, int newSize);" /> - <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[] array, int32 newSize) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[]& array, int32 newSize) cil managed" /> <MemberType>Method</MemberType> <ReturnValue> <ReturnType>System.Void</ReturnType> diff --git a/mdoc/Test/en.expected.importecmadoc/System/Array.xml b/mdoc/Test/en.expected.importecmadoc/System/Array.xml index 91084a09..1f7549a9 100644 --- a/mdoc/Test/en.expected.importecmadoc/System/Array.xml +++ b/mdoc/Test/en.expected.importecmadoc/System/Array.xml @@ -177,7 +177,7 @@ and the second dimension indexed by 1, 2, and 3. </para> </Member> <Member MemberName="Resize<T>"> <MemberSignature Language="C#" Value="public static void Resize<T> (ref T[] array, int newSize);" /> - <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[] array, int32 newSize) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[]& array, int32 newSize) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyVersion>0.0.0.0</AssemblyVersion> diff --git a/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1.xml b/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1.xml index 82b4148e..96e7fb1b 100644 --- a/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1.xml +++ b/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/MyList`1.xml @@ -116,7 +116,7 @@ </Member> <Member MemberName="RefMethod<U>"> <MemberSignature Language="C#" Value="public void RefMethod<U> (ref T t, ref U u);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T t, !!U u) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T& t, !!U& u) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyVersion>0.0.0.0</AssemblyVersion> diff --git a/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml index eb481223..7dd0c869 100644 --- a/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml +++ b/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml @@ -851,7 +851,7 @@ </Member> <Member MemberName="M1"> <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, float32 f, valuetype Mono.DocTest.DocValueType v) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, [out] float32& f, valuetype Mono.DocTest.DocValueType& v) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyVersion>0.0.0.0</AssemblyVersion> diff --git a/mdoc/Test/en.expected.importslashdoc/System/Array.xml b/mdoc/Test/en.expected.importslashdoc/System/Array.xml index 1f221eb2..b218507b 100644 --- a/mdoc/Test/en.expected.importslashdoc/System/Array.xml +++ b/mdoc/Test/en.expected.importslashdoc/System/Array.xml @@ -85,7 +85,7 @@ </Member> <Member MemberName="Resize<T>"> <MemberSignature Language="C#" Value="public static void Resize<T> (ref T[] array, int newSize);" /> - <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[] array, int32 newSize) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[]& array, int32 newSize) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyVersion>0.0.0.0</AssemblyVersion> diff --git a/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1.xml b/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1.xml index 50cd32ce..78decebe 100644 --- a/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1.xml +++ b/mdoc/Test/en.expected.since/Mono.DocTest.Generic/MyList`1.xml @@ -116,7 +116,7 @@ </Member> <Member MemberName="RefMethod<U>"> <MemberSignature Language="C#" Value="public void RefMethod<U> (ref T t, ref U u);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T t, !!U u) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T& t, !!U& u) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyVersion>0.0.0.0</AssemblyVersion> diff --git a/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml index c6865957..a70a7e29 100644 --- a/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml +++ b/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml @@ -831,7 +831,7 @@ </Member> <Member MemberName="M1"> <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, float32 f, valuetype Mono.DocTest.DocValueType v) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, [out] float32& f, valuetype Mono.DocTest.DocValueType& v) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyVersion>0.0.0.0</AssemblyVersion> diff --git a/mdoc/Test/en.expected.since/System/Array.xml b/mdoc/Test/en.expected.since/System/Array.xml index 77998109..cab9b591 100644 --- a/mdoc/Test/en.expected.since/System/Array.xml +++ b/mdoc/Test/en.expected.since/System/Array.xml @@ -89,7 +89,7 @@ </Member> <Member MemberName="Resize<T>"> <MemberSignature Language="C#" Value="public static void Resize<T> (ref T[] array, int newSize);" /> - <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[] array, int32 newSize) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[]& array, int32 newSize) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyVersion>0.0.0.0</AssemblyVersion> diff --git a/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml b/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml index 71d07cfd..d723d126 100644 --- a/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml +++ b/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml @@ -111,7 +111,7 @@ </Member> <Member MemberName="RefMethod<U>"> <MemberSignature Language="C#" Value="public void RefMethod<U> (ref T t, ref U u);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T t, !!U u) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod<U>(!T& t, !!U& u) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyVersion>0.0.0.0</AssemblyVersion> diff --git a/mdoc/Test/en.expected/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected/Mono.DocTest/Widget.xml index 231dc9a0..a61c0f63 100644 --- a/mdoc/Test/en.expected/Mono.DocTest/Widget.xml +++ b/mdoc/Test/en.expected/Mono.DocTest/Widget.xml @@ -807,7 +807,7 @@ </Member> <Member MemberName="M1"> <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" /> - <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, float32 f, valuetype Mono.DocTest.DocValueType v) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, [out] float32& f, valuetype Mono.DocTest.DocValueType& v) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyVersion>0.0.0.0</AssemblyVersion> diff --git a/mdoc/Test/en.expected/System/Array.xml b/mdoc/Test/en.expected/System/Array.xml index 1f221eb2..b218507b 100644 --- a/mdoc/Test/en.expected/System/Array.xml +++ b/mdoc/Test/en.expected/System/Array.xml @@ -85,7 +85,7 @@ </Member> <Member MemberName="Resize<T>"> <MemberSignature Language="C#" Value="public static void Resize<T> (ref T[] array, int newSize);" /> - <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[] array, int32 newSize) cil managed" /> + <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize<T>(!!T[]& array, int32 newSize) cil managed" /> <MemberType>Method</MemberType> <AssemblyInfo> <AssemblyVersion>0.0.0.0</AssemblyVersion> diff --git a/mdoc/mdoc.Test/FormatterTests.cs b/mdoc/mdoc.Test/FormatterTests.cs index d29a6e07..799ad138 100644 --- a/mdoc/mdoc.Test/FormatterTests.cs +++ b/mdoc/mdoc.Test/FormatterTests.cs @@ -191,6 +191,14 @@ namespace mdoc.Test var sig = formatter.GetDeclaration (member); Assert.AreEqual ("public void DoSomethingWithParams (params int[] values);", sig); } + [Test] + public void IL_RefAndOut () + { + var member = GetMethod<TestClass> (m => m.Name == "RefAndOut"); + var formatter = new ILFullMemberFormatter (); + var sig = formatter.GetDeclaration (member); + Assert.AreEqual (".method public hidebysig instance void RefAndOut(int32& a, [out] int32& b) cil managed", sig); + } #region Helper Methods string RealTypeName(string name){ diff --git a/mdoc/mdoc.Test/SampleClasses/TestClass.cs b/mdoc/mdoc.Test/SampleClasses/TestClass.cs index 71b25694..44354596 100644 --- a/mdoc/mdoc.Test/SampleClasses/TestClass.cs +++ b/mdoc/mdoc.Test/SampleClasses/TestClass.cs @@ -44,5 +44,6 @@ namespace mdoc.Test.SampleClasses public static explicit operator TestClass (int c1) { return new TestClass (); } public void DoSomethingWithParams (params int[] values) { } + public void RefAndOut (ref int a, out int b) { b = 1; } } } |