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
diff options
context:
space:
mode:
authorTianqi Zhang <tianzh@microsoft.com>2019-01-04 05:00:34 +0300
committerJoel Martinez <joelmartinez@gmail.com>2019-01-08 19:10:23 +0300
commit441419e0cbe08995e5fec6fd203c8090941c479a (patch)
tree872061409f96c08faeb94b413412efd96f95dda5
parente79fcbbb2d8863e03fb1aeff28903400ec7e1055 (diff)
Fix MemberSignatures for ref returns and ref readonly returns
-rw-r--r--apidoctools.sln22
-rw-r--r--mdoc/Makefile2
-rw-r--r--mdoc/Mono.Documentation/MDocUpdater.cs17
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs13
-rw-r--r--mdoc/mdoc.Test/FormatterTests.cs9
-rw-r--r--mdoc/mdoc.Test/SampleClasses/ReadonlyRefClass.cs10
-rw-r--r--mdoc/mdoc.Test/mdoc.Test.csproj3
7 files changed, 64 insertions, 12 deletions
diff --git a/apidoctools.sln b/apidoctools.sln
index 040cc258..28aa52c9 100644
--- a/apidoctools.sln
+++ b/apidoctools.sln
@@ -13,12 +13,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpZipLib", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mdoc.Test", "mdoc\mdoc.Test\mdoc.Test.csproj", "{5ADDEFB6-930C-46BC-8B2B-FDE5C7E3B5AD}"
EndProject
-Project("{f2a71f9b-5d33-465a-a702-920d77279786}") = "mdoc.Test.FSharp", "mdoc\mdoc.Test\mdoc.Test.FSharp\mdoc.Test.FSharp.fsproj", "{979F9F80-12FE-4236-9E93-6D554AB13701}"
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "mdoc.Test.FSharp", "mdoc\mdoc.Test\mdoc.Test.FSharp\mdoc.Test.FSharp.fsproj", "{979F9F80-12FE-4236-9E93-6D554AB13701}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mdoc.Test.Cplusplus", "mdoc.Test.Cplusplus\mdoc.Test.Cplusplus.vcxproj", "{9398D4E3-1779-44FD-AF8C-BB46562DCD88}"
EndProject
Global
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
@@ -126,6 +125,18 @@ Global
{979F9F80-12FE-4236-9E93-6D554AB13701}.Release|x64.Build.0 = Release|Any CPU
{979F9F80-12FE-4236-9E93-6D554AB13701}.Release|x86.ActiveCfg = Release|Any CPU
{979F9F80-12FE-4236-9E93-6D554AB13701}.Release|x86.Build.0 = Release|Any CPU
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Debug|ARM.ActiveCfg = Debug|Win32
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Debug|x64.ActiveCfg = Debug|x64
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Debug|x64.Build.0 = Debug|x64
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Debug|x86.ActiveCfg = Debug|Win32
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Debug|x86.Build.0 = Debug|Win32
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Release|Any CPU.ActiveCfg = Release|Win32
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Release|ARM.ActiveCfg = Release|Win32
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Release|x64.ActiveCfg = Release|x64
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Release|x64.Build.0 = Release|x64
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Release|x86.ActiveCfg = Release|Win32
+ {9398D4E3-1779-44FD-AF8C-BB46562DCD88}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -133,6 +144,9 @@ Global
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6D6A6927-89D3-42DF-A416-294A841822A9}
EndGlobalSection
+ GlobalSection(Performance) = preSolution
+ HasPerformanceSessions = true
+ EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
StartupItem = mdoc.csproj
EndGlobalSection
diff --git a/mdoc/Makefile b/mdoc/Makefile
index b98c321b..75b37b9a 100644
--- a/mdoc/Makefile
+++ b/mdoc/Makefile
@@ -48,7 +48,7 @@ MULTI-UNIFIED = Test/DocTest-DropNS-unified.dll Test/DocTest-DropNS-unified-mult
DIFF = diff -rup
DIFF_QUIET = diff --brief
-ifeq ($(PLATFORM), win32)
+ifeq ($(OS), Windows_NT)
DIFF = diff -rupZ
DIFF_QUIET = diff --brief -Z
endif
diff --git a/mdoc/Mono.Documentation/MDocUpdater.cs b/mdoc/Mono.Documentation/MDocUpdater.cs
index ef5b5d9f..5db01ae6 100644
--- a/mdoc/Mono.Documentation/MDocUpdater.cs
+++ b/mdoc/Mono.Documentation/MDocUpdater.cs
@@ -3830,14 +3830,17 @@ namespace Mono.Documentation
{
XmlElement e = WriteElement (root, "ReturnValue");
var valueToUse = GetDocTypeFullName (type);
- if (type.IsByReference)
- e.SetAttribute("RefType", "Ref");
-
- if (type.IsRequiredModifier && IsReadonlyAttribute(attributes))
+ if (type.IsRequiredModifier)
{
- e.SetAttribute("RefType", "Readonly");
- if (valueToUse[valueToUse.Length - 1] == '&')
- valueToUse = valueToUse.Remove(valueToUse.Length - 1);
+ if (((RequiredModifierType)type).ElementType.IsByReference)
+ e.SetAttribute("RefType", "Ref");
+
+ if (IsReadonlyAttribute(attributes))
+ {
+ e.SetAttribute("RefType", "Readonly");
+ if (valueToUse[valueToUse.Length - 1] == '&')
+ valueToUse = valueToUse.Remove(valueToUse.Length - 1);
+ }
}
AddXmlNode (e.SelectNodes ("ReturnType").Cast<XmlElement> ().ToArray (),
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs
index 0de66dcb..a7e0344e 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs
@@ -411,6 +411,19 @@ namespace Mono.Documentation.Updater
if (method.IsFinal) modifiers += " sealed";
if (modifiers == " virtual sealed") modifiers = "";
+ if (method.ReturnType.IsRequiredModifier)
+ {
+ if (((RequiredModifierType)method.ReturnType).ElementType.IsByReference)
+ {
+ modifiers += " ref";
+ }
+
+ if (method.MethodReturnType.CustomAttributes.Any(attr => attr.AttributeType.FullName == "System.Runtime.CompilerServices.IsReadOnlyAttribute"))
+ {
+ modifiers += " readonly";
+ }
+ }
+
switch (method.Name)
{
case "op_Implicit":
diff --git a/mdoc/mdoc.Test/FormatterTests.cs b/mdoc/mdoc.Test/FormatterTests.cs
index c0e57307..9ad9df2e 100644
--- a/mdoc/mdoc.Test/FormatterTests.cs
+++ b/mdoc/mdoc.Test/FormatterTests.cs
@@ -207,6 +207,15 @@ namespace mdoc.Test
"~SomeGenericClass ();",
"Finalize");
+ [Test]
+ public void CSharpReadonlyRef()
+ {
+ var member = GetMethod(typeof(ReadonlyRefClass), m => m.Name == "ReadonlyRef");
+ var formatter = new CSharpFullMemberFormatter();
+ var sig = formatter.GetDeclaration(member);
+ Assert.AreEqual("public ref readonly int ReadonlyRef ();", sig);
+ }
+
#region Helper Methods
string RealTypeName(string name){
switch (name) {
diff --git a/mdoc/mdoc.Test/SampleClasses/ReadonlyRefClass.cs b/mdoc/mdoc.Test/SampleClasses/ReadonlyRefClass.cs
new file mode 100644
index 00000000..06f3f8a1
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/ReadonlyRefClass.cs
@@ -0,0 +1,10 @@
+namespace mdoc.Test.SampleClasses
+{
+ public class ReadonlyRefClass
+ {
+ int i;
+
+ public ref int Ref() => ref i;
+ public ref readonly int ReadonlyRef() => ref i;
+ }
+}
diff --git a/mdoc/mdoc.Test/mdoc.Test.csproj b/mdoc/mdoc.Test/mdoc.Test.csproj
index e371ad37..6dfc359b 100644
--- a/mdoc/mdoc.Test/mdoc.Test.csproj
+++ b/mdoc/mdoc.Test/mdoc.Test.csproj
@@ -21,12 +21,14 @@
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
+ <LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
+ <LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup>
<RunPostBuildEvent>Always</RunPostBuildEvent>
@@ -88,6 +90,7 @@
<Compile Include="JsUsageFormatterTests.cs" />
<Compile Include="MDocFileSourceTests.cs" />
<Compile Include="MDocUpdaterTests.cs" />
+ <Compile Include="SampleClasses\ReadonlyRefClass.cs" />
<Compile Include="SampleClasses\ReadOnlySpan.cs" />
<Compile Include="SampleClasses\SomeDelegate.cs" />
<Compile Include="SampleClasses\SomeInterface.cs" />