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:
authoranmeng10101 <33647870+anmeng10101@users.noreply.github.com>2021-05-18 17:14:03 +0300
committerGitHub <noreply@github.com>2021-05-18 17:14:03 +0300
commiteb934bc2a06a5cb62c42ac99a1f1013c665bcaad (patch)
tree044df660c91a5b648cf621d0bbacb88cf1436d3f
parent24ba59fcca3d1acacdb0f71acbdf401d5ce3fb96 (diff)
parentd9e2cd450a322fe0eaff003e43ec0042b6a7a81b (diff)
Merge pull request #559 from mono/developmdoc-5.8.4-test
🚢 5.8.3
-rw-r--r--external/Windows/Windows.Foundation.FoundationContract.winmdbin24064 -> 24576 bytes
-rw-r--r--external/Windows/Windows.Foundation.UniversalApiContract.winmdbin4656640 -> 5858304 bytes
-rw-r--r--mdoc/Consts.cs2
-rw-r--r--mdoc/Makefile34
-rw-r--r--mdoc/Mono.Documentation/MDocUpdater.cs23
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/ApplePlatformEnumFormatter.cs95
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeFormatter.cs35
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeValueFormatter.cs389
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/DefaultAttributeValueFormatter.cs13
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/StandardFlagsEnumFormatter.cs36
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs7
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxFullMemberFormatter.cs18
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs17
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtFullMemberFormatter.cs59
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs2
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/ILFullMemberFormatter.cs2
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs2
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs70
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs2
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/VBFullMemberFormatter.cs2
-rw-r--r--mdoc/Mono.Documentation/Updater/Frameworks/AssemblySet.cs5
-rw-r--r--mdoc/Mono.Documentation/Updater/ResolvedTypeInfo.cs29
-rw-r--r--mdoc/Test/ClassEnumeratorECMA.xml2
-rw-r--r--mdoc/Test/DocTest-differentTypeDefinitions.cs14
-rw-r--r--mdoc/Test/DocTest-v1.cs7
-rw-r--r--mdoc/Test/en.expected-attached-entities/AttachedEventsAndProperties/AquariumFilter.xml2
-rw-r--r--mdoc/Test/en.expected-attached-entities/AttachedEventsAndProperties/AttachedPropertyExample.xml4
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/CompoundConstraints`1.xml67
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1.xml2
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget.xml1
-rw-r--r--mdoc/Test/en.expected-cppcx2/System/Array.xml2
-rw-r--r--mdoc/Test/en.expected-cppcx2/index.xml1
-rw-r--r--mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClass.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClassExtensions.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt/MyFramework.MyOtherNamespace/MyOtherClass.xml4
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/CompoundConstraints`1.xml67
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Extensions.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1.xml8
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/IFoo`1.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1+Helper`2.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1.xml6
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`2.xml10
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocAttribute.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocValueType.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/UseLists.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass`1.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget.xml42
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/System/Array.xml2
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/index.xml1
-rw-r--r--mdoc/Test/en.expected-eii-implementation-ecmadoc/CustomNamespace/ClassEnumerator.xml2
-rw-r--r--mdoc/Test/en.expected-eii-implementation-slashdoc/CustomNamespace/ClassEnumerator.xml2
-rw-r--r--mdoc/Test/en.expected-eii-implementation/CustomNamespace/ClassEnumerator.xml2
-rw-r--r--mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Circle.xml4
-rw-r--r--mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Prism.xml4
-rw-r--r--mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Rectangle.xml4
-rw-r--r--mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+FirstLast.xml4
-rw-r--r--mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+FirstOnly.xml4
-rw-r--r--mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+LastOnly.xml4
-rw-r--r--mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+Shape+Circle.xml4
-rw-r--r--mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+Shape+Rectangle.xml4
-rw-r--r--mdoc/Test/en.expected-fx-import/FrameworksIndex/one.xml4
-rw-r--r--mdoc/Test/en.expected-fx-import/Mono.DocTest.Generic/CompoundConstraints`1.xml68
-rw-r--r--mdoc/Test/en.expected-fx-import/index.xml1
-rw-r--r--mdoc/Test/en.expected-guid/index.xml22
-rw-r--r--mdoc/Test/en.expected-guid/mdoc.Test.SampleClasses/GuidClass.xml102
-rw-r--r--mdoc/Test/en.expected-guid/ns-mdoc.Test.SampleClasses.xml6
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/CompoundConstraints`1.xml65
-rw-r--r--mdoc/Test/en.expected-javascript/index.xml1
-rw-r--r--mdoc/Test/en.expected-vbnet2/Mono.DocTest.Generic/CompoundConstraints`1.xml68
-rw-r--r--mdoc/Test/en.expected-vbnet2/index.xml1
-rw-r--r--mdoc/Test/en.expected.delete/Mono.DocTest.Generic/CompoundConstraints`1.xml58
-rw-r--r--mdoc/Test/en.expected.delete/index.xml1
-rw-r--r--mdoc/Test/en.expected.differentTypeDefinitions/FrameworksIndex/One.xml13
-rw-r--r--mdoc/Test/en.expected.differentTypeDefinitions/TheNamespace/TheClass.xml56
-rw-r--r--mdoc/Test/en.expected.differentTypeDefinitions/index.xml32
-rw-r--r--mdoc/Test/en.expected.differentTypeDefinitions/ns-TheNamespace.xml6
-rw-r--r--mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/CompoundConstraints`1.xml66
-rw-r--r--mdoc/Test/en.expected.importslashdoc/index.xml1
-rw-r--r--mdoc/Test/en.expected.since/Mono.DocTest.Generic/CompoundConstraints`1.xml68
-rw-r--r--mdoc/Test/en.expected.since/index.xml1
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest.Generic/CompoundConstraints`1.xml80
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest.Generic/Extensions.xml2
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml8
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest.Generic/IFoo`1.xml2
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1+Helper`2.xml2
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml8
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`2.xml10
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml2
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml2
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest/UseLists.xml2
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass.xml2
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass`1.xml2
-rw-r--r--mdoc/Test/en.expected/Mono.DocTest/Widget.xml43
-rw-r--r--mdoc/Test/en.expected/System/Array.xml4
-rw-r--r--mdoc/Test/en.expected/index.xml1
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class3.xml2
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/Namespace222/App.xml8
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Class1.xml8
-rw-r--r--mdoc/Test/expected_statistics.txt8
-rw-r--r--mdoc/Test/html.expected-with-array-extension/Mono.DocTest.Generic/CompoundConstraints`1.html349
-rw-r--r--mdoc/Test/html.expected-with-array-extension/Mono.DocTest.Generic/index.html8
-rw-r--r--mdoc/Test/html.expected-with-array-extension/index.html8
-rw-r--r--mdoc/Test/html.expected/Mono.DocTest.Generic/CompoundConstraints`1.html346
-rw-r--r--mdoc/Test/html.expected/Mono.DocTest.Generic/index.html8
-rw-r--r--mdoc/Test/html.expected/index.html8
-rw-r--r--mdoc/Test/msxdoc-expected.importslashdoc.xml15
-rw-r--r--mdoc/Test/test-multiple-mdoc/en.expected.test.multiple.mdoc/Mono.DocTest.Generic/CompoundConstraints`1.xml66
-rw-r--r--mdoc/Test/test-multiple-mdoc/en.expected.test.multiple.mdoc/index.xml1
-rw-r--r--mdoc/mdoc.Test/AttributeValueFormatterTest.cs168
-rw-r--r--mdoc/mdoc.Test/CppCxFormatterMembersTests.cs44
-rw-r--r--mdoc/mdoc.Test/CppCxFormatterTypesTests.cs66
-rw-r--r--mdoc/mdoc.Test/CppFullFormatterTests.cs26
-rw-r--r--mdoc/mdoc.Test/CppWinRtFormatterTests.cs66
-rw-r--r--mdoc/mdoc.Test/CppWinRtMembersTests.cs56
-rw-r--r--mdoc/mdoc.Test/FormatterTests.cs17
-rw-r--r--mdoc/mdoc.Test/SampleClasses/ApplePlatformEnum.cs48
-rw-r--r--mdoc/mdoc.Test/SampleClasses/AttributeDataTypeAttribute.cs57
-rw-r--r--mdoc/mdoc.Test/SampleClasses/GuidClass.cs17
-rw-r--r--mdoc/mdoc.Test/SampleClasses/NotApplyAttributeInvalidFlagsEnum.cs10
-rw-r--r--mdoc/mdoc.Test/SampleClasses/NotApplyAttributeValidFlagsEnum.cs12
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeAttribute.cs450
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeFlagsEnum.cs14
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeIteratorStateMachine.cs44
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeNestedTypes.cs34
-rw-r--r--mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.cpp2
-rw-r--r--mdoc/mdoc.Test/mdoc.Test.csproj10
-rw-r--r--mdoc/mdoc.csproj4
-rw-r--r--mdoc/mdoc.nuspec2
129 files changed, 3475 insertions, 459 deletions
diff --git a/external/Windows/Windows.Foundation.FoundationContract.winmd b/external/Windows/Windows.Foundation.FoundationContract.winmd
index b3b4615b..97dc47ce 100644
--- a/external/Windows/Windows.Foundation.FoundationContract.winmd
+++ b/external/Windows/Windows.Foundation.FoundationContract.winmd
Binary files differ
diff --git a/external/Windows/Windows.Foundation.UniversalApiContract.winmd b/external/Windows/Windows.Foundation.UniversalApiContract.winmd
index ab5d413e..32a8f4b6 100644
--- a/external/Windows/Windows.Foundation.UniversalApiContract.winmd
+++ b/external/Windows/Windows.Foundation.UniversalApiContract.winmd
Binary files differ
diff --git a/mdoc/Consts.cs b/mdoc/Consts.cs
index a77b295e..2453363d 100644
--- a/mdoc/Consts.cs
+++ b/mdoc/Consts.cs
@@ -3,7 +3,7 @@ namespace Mono.Documentation
{
public static class Consts
{
- public static string MonoVersion = "5.8.2";
+ public static string MonoVersion = "5.8.3";
public const string DocId = "DocId";
public const string CppCli = "C++ CLI";
public const string CppCx = "C++ CX";
diff --git a/mdoc/Makefile b/mdoc/Makefile
index 4393b0d7..3966cb34 100644
--- a/mdoc/Makefile
+++ b/mdoc/Makefile
@@ -139,6 +139,14 @@ Test/DocTest-enumerations.dll:
Test/DocTest-embedded-type.dll:
$(CSCOMPILE) $(TEST_CSCFLAGS) -unsafe -debug -optimize -target:library -out:$@ Test/DocTest-embedded-type.cs
+Test/DocTest-differentTypeDefinitions-First.dll:
+ rm -f $@
+ $(CSCOMPILE) $(TEST_CSCFLAGS) -unsafe -debug -optimize -target:library -out:$@ Test/DocTest-differentTypeDefinitions.cs /define:FIRST
+
+Test/DocTest-differentTypeDefinitions-Second.dll:
+ rm -f $@
+ $(CSCOMPILE) $(TEST_CSCFLAGS) -unsafe -debug -optimize -target:library -out:$@ Test/DocTest-differentTypeDefinitions.cs /define:SECOND
+
Test/DocTest-typeForwards-First.dll:
rm -f $@
$(CSCOMPILE) $(TEST_CSCFLAGS) -unsafe -debug -optimize -target:library -out:$@ Test/DocTest-typeForwards.cs /define:FIRST
@@ -199,6 +207,20 @@ Test/FrameworkTestData-fx-inheritance: Test/DocTest-framework-inheritance-one.dl
cp Test/DocTest-framework-inheritance-three.dll Test/FrameworkTestData-fx-inheritance/Three/
$(MONO) $(PROGRAM) fx-bootstrap Test/FrameworkTestData-fx-inheritance
+.PHONY: check-monodocer-differentTypeDefinitions
+check-monodocer-differentTypeDefinitions : Test/DocTest-differentTypeDefinitions-First.dll Test/DocTest-differentTypeDefinitions-Second.dll
+ -rm -Rf Test/en.actual
+
+ -rm -Rf Test/FrameworkTestData-fx-differentTypeDefinitions
+ mkdir Test/FrameworkTestData-fx-differentTypeDefinitions
+ mkdir Test/FrameworkTestData-fx-differentTypeDefinitions/One
+ cp Test/DocTest-differentTypeDefinitions-First.dll Test/FrameworkTestData-fx-differentTypeDefinitions/One
+ cp Test/DocTest-differentTypeDefinitions-Second.dll Test/FrameworkTestData-fx-differentTypeDefinitions/One
+ $(MONO) $(PROGRAM) fx-bootstrap Test/FrameworkTestData-fx-differentTypeDefinitions
+
+ $(MONO) $(PROGRAM) update -o Test/en.actual -frameworks Test/FrameworkTestData-fx-differentTypeDefinitions
+ $(DIFF) Test/en.expected.differentTypeDefinitions Test/en.actual
+
.PHONY: check-monodocer-typeForwards
check-monodocer-typeForwards : Test/DocTest-typeForwards-First.dll Test/DocTest-typeForwards-Second.dll Test/DocTest-typeForwards-Third.dll
-rm -Rf Test/en.actual
@@ -726,6 +748,9 @@ check-monodocer-attached-entities:
Test/TestClass.dll:
$(CSCOMPILE) $(TEST_CSCFLAGS) -unsafe -debug -optimize -target:library -out:$@ mdoc.Test/SampleClasses/Test*.cs
+Test/GuidClass.dll:
+ $(CSCOMPILE) $(TEST_CSCFLAGS) -unsafe -debug -optimize -target:library -out:$@ mdoc.Test/SampleClasses/GuidClass.cs
+
.PHONY: check-monodocer-operators-work
check-monodocer-operators-work: Test/TestClass.dll
rm -Rf Test/en.actual
@@ -742,6 +767,11 @@ check-monodocer-operators-update: check-monodocer-operators-work
rm -Rf Test/en.expected-operators
mv Test/en.actual Test/en.expected-operators
+check-monodocer-guid: Test/GuidClass.dll
+ rm -Rf Test/en.actual
+ $(MONO) $(PROGRAM) update -o Test/en.actual Test/GuidClass.dll -lang c++/cx -lang c++/winrt
+ $(DIFF) Test/en.expected-guid Test/en.actual
+
check-mdoc-export-html-update:
find Test/html.expected -name \*.html -exec rm "{}" \;
$(MONO) $(PROGRAM) export-html -o Test/html.expected \
@@ -827,6 +857,7 @@ run-test-local: check-doc-tools
run-test-update : check-doc-tools-update
check-doc-tools: \
+ check-monodocer-differentTypeDefinitions \
check-monodocer-typeForwards \
check-monodocer-nestedType-typeForwards \
check-monodocer-Eii-importslashdoc \
@@ -856,6 +887,7 @@ check-doc-tools: \
check-monodocer-frameworks-inheritance \
check-monodocer-docid \
check-monodocer-operators \
+ check-monodocer-guid \
check-monodocer-fx-statistics-remove \
check-overwrite-attribute \
check-monodocer-vbnet \
@@ -887,5 +919,5 @@ check-doc-tools-update: check-monodocer-since-update \
check-mdoc-export-msxdoc-update \
check-mdoc-validate-update
-check: nunit check-doc-tools
+check: nunit check-doc-tools
@echo "mdoc Tests Complete!"
diff --git a/mdoc/Mono.Documentation/MDocUpdater.cs b/mdoc/Mono.Documentation/MDocUpdater.cs
index 3e24f500..47b50d40 100644
--- a/mdoc/Mono.Documentation/MDocUpdater.cs
+++ b/mdoc/Mono.Documentation/MDocUpdater.cs
@@ -320,6 +320,9 @@ namespace Mono.Documentation
if (File.Exists(typeMapPath))
{
Console.WriteLine($"Loading typemap file at {typeMapPath}");
+ if (!Directory.Exists(srcPath))
+ Directory.CreateDirectory(srcPath);
+ File.Copy(typeMapPath, Path.Combine(srcPath, "TypeMap.xml"), true);
TypeMap map = TypeMap.FromXml(typeMapPath);
this.TypeMap = map;
FormatterManager.UpdateTypeMap(map);
@@ -2451,7 +2454,6 @@ namespace Mono.Documentation
info.Node = WriteElement (me, "Docs");
MakeDocNode (info, typeEntry.Framework.Importers, typeEntry);
-
foreach (MemberFormatter f in FormatterManager.MemberFormatters)
{
@@ -3870,9 +3872,22 @@ namespace Mono.Documentation
NormalizeWhitespace(e);
}
+ private bool ProcessedMoreThanOnce(FrameworkTypeEntry typeEntry)
+ {
+ if (typeEntry.TimesProcessed <= 1)
+ {
+ return false;
+ }
+ else
+ {
+ var assemblies = this.assemblies.Where(a => a.Name == typeEntry.Framework.Name).ToList();
+ return assemblies.Any(a => a.IsTypeForwardingTo(typeEntry));
+ }
+ }
+
public void MakeParameters (XmlElement root, MemberReference member, IList<ParameterDefinition> parameters, FrameworkTypeEntry typeEntry, ref bool fxAlternateTriggered, bool shouldDuplicateWithNew = false)
{
- if (typeEntry.TimesProcessed > 1)
+ if (ProcessedMoreThanOnce(typeEntry))
return;
XmlElement e = WriteElement (root, "Parameters");
@@ -4407,9 +4422,9 @@ namespace Mono.Documentation
return docTypeFormatter.GetName (type, useTypeProjection: useTypeProjection);
}
- internal static string GetDocTypeFullName (TypeReference type, bool useTypeProjection = true)
+ internal static string GetDocTypeFullName (TypeReference type, bool useTypeProjection = true, bool isTypeofOperator = false)
{
- return DocTypeFullMemberFormatter.Default.GetName (type, useTypeProjection: useTypeProjection);
+ return DocTypeFullMemberFormatter.Default.GetName (type, useTypeProjection: useTypeProjection, isTypeofOperator: isTypeofOperator);
}
internal static string GetXPathForMember (DocumentationMember member)
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/ApplePlatformEnumFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/ApplePlatformEnumFormatter.cs
deleted file mode 100644
index 55dd508f..00000000
--- a/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/ApplePlatformEnumFormatter.cs
+++ /dev/null
@@ -1,95 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-using Mono.Cecil;
-
-namespace Mono.Documentation.Updater
-{
- /// <summary>A custom formatter for the ObjCRuntime.Platform enumeration.</summary>
- class ApplePlatformEnumFormatter : AttributeValueFormatter
- {
- public override bool TryFormatValue (object v, ResolvedTypeInfo type, out string returnvalue)
- {
- TypeReference valueType = type.Reference;
- string typename = MDocUpdater.GetDocTypeFullName (valueType);
- TypeDefinition valueDef = type.Definition;
- if (typename.Contains ("ObjCRuntime.Platform") && valueDef.CustomAttributes.Any (ca => ca.AttributeType.FullName == "System.FlagsAttribute"))
- {
-
- var values = GetEnumerationValues (valueDef);
- long c = ToInt64 (v);
-
- returnvalue = Format (c, values, typename);
- return true;
- }
-
- returnvalue = null;
- return false;
- }
-
- string Format (long c, IDictionary<long, string> values, string typename)
- {
- int iosarch, iosmajor, iosminor, iossubminor;
- int macarch, macmajor, macminor, macsubminor;
- GetEncodingiOS (c, out iosarch, out iosmajor, out iosminor, out iossubminor);
- GetEncodingMac ((ulong)c, out macarch, out macmajor, out macminor, out macsubminor);
-
- if (iosmajor == 0 & iosminor == 0 && iossubminor == 0)
- {
- return FormatValues ("Mac", macarch, macmajor, macminor, macsubminor);
- }
-
- if (macmajor == 0 & macminor == 0 && macsubminor == 0)
- {
- return FormatValues ("iOS", iosarch, iosmajor, iosminor, iossubminor);
- }
-
- return string.Format ("(Platform){0}", c);
- }
-
- string FormatValues (string plat, int arch, int major, int minor, int subminor)
- {
- string archstring = "";
- switch (arch)
- {
- case 1:
- archstring = "32";
- break;
- case 2:
- archstring = "64";
- break;
- }
- return string.Format ("Platform.{4}_{0}_{1}{2} | Platform.{4}_Arch{3}",
- major,
- minor,
- subminor == 0 ? "" : "_" + subminor.ToString (),
- archstring,
- plat
- );
- }
-
- void GetEncodingiOS (long entireLong, out int archindex, out int major, out int minor, out int subminor)
- {
- long lowerBits = entireLong & 0xffffffff;
- int lowerBitsAsInt = (int)lowerBits;
- GetEncoding (lowerBitsAsInt, out archindex, out major, out minor, out subminor);
- }
-
- void GetEncodingMac (ulong entireLong, out int archindex, out int major, out int minor, out int subminor)
- {
- ulong higherBits = entireLong & 0xffffffff00000000;
- int higherBitsAsInt = (int)((higherBits) >> 32);
- GetEncoding (higherBitsAsInt, out archindex, out major, out minor, out subminor);
- }
-
- void GetEncoding (Int32 encodedBits, out int archindex, out int major, out int minor, out int subminor)
- {
- // format is AAJJNNSS
- archindex = (int)((encodedBits & 0xFF000000) >> 24);
- major = (int)((encodedBits & 0x00FF0000) >> 16);
- minor = (int)((encodedBits & 0x0000FF00) >> 8);
- subminor = (int)((encodedBits & 0x000000FF) >> 0);
- }
- }
-} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeFormatter.cs
index 1378675a..b8076d73 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeFormatter.cs
@@ -2,13 +2,14 @@
using Mono.Documentation.Util;
using System;
using System.Collections.Generic;
-using System.IO;
using System.Linq;
namespace Mono.Documentation.Updater.Formatters
{
public class AttributeFormatter
{
+ private AttributeValueFormatter valueFormatter = new AttributeValueFormatter();
+
public virtual string PrefixBrackets { get; } = "";
public virtual string SurfixBrackets { get; } = "";
public virtual string Language { get; } = "";
@@ -119,37 +120,9 @@ namespace Mono.Documentation.Updater.Formatters
return $"{name}={value}";
}
- public virtual string MakeAttributesValueString(object v, TypeReference valueType)
+ public virtual string MakeAttributesValueString(object argumentValue, TypeReference argumentType)
{
- var formatters = new[] {
- new AttributeValueFormatter (),
- new ApplePlatformEnumFormatter (),
- new StandardFlagsEnumFormatter (),
- new DefaultAttributeValueFormatter (),
- };
-
- ResolvedTypeInfo type = new ResolvedTypeInfo(valueType);
-
- if (valueType is ArrayType && v is CustomAttributeArgument[])
- {
- ArrayType atype = valueType as ArrayType;
- CustomAttributeArgument[] args = v as CustomAttributeArgument[];
- var returnvalue = $"new {atype.FullName}{(atype.FullName.EndsWith("[]") ? "" : "[]")} {{ { string.Join(", ", args.Select(a => MakeAttributesValueString(a.Value, a.Type)).ToArray()) } }}";
- return returnvalue;
- }
-
- foreach (var formatter in formatters)
- {
- string formattedValue;
- if (formatter.TryFormatValue(v, type, out formattedValue))
- {
- return formattedValue;
- }
- }
-
- // this should never occur because the DefaultAttributeValueFormatter will always
- // successfully format the value ... but this is needed to satisfy the compiler :)
- throw new InvalidDataException(string.Format("Unable to format attribute value ({0})", v.ToString()));
+ return valueFormatter.Format(argumentType, argumentValue);
}
private bool IsIgnoredAttribute(CustomAttribute customAttribute)
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeValueFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeValueFormatter.cs
index a9e092bb..41566740 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeValueFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/AttributeValueFormatter.cs
@@ -1,92 +1,385 @@
-using System;
+using Mono.Cecil;
+using System;
using System.Collections.Generic;
using System.Linq;
-using Mono.Cecil;
-
-using Mono.Documentation.Util;
namespace Mono.Documentation.Updater
{
- /// <summary>Formats attribute values. Should return true if it is able to format the value.</summary>
- class AttributeValueFormatter
- {
- public virtual bool TryFormatValue (object v, ResolvedTypeInfo type, out string returnvalue)
+ public class AttributeValueFormatter
+ {
+ public string Format(TypeReference argumentType, object argumentValue)
{
- TypeReference valueType = type.Reference;
- if (v == null)
+ // When a property type of an attribute is an object type you can assign any type to it,
+ // so we need to convert the object type to a concrete object type.
+ if (argumentValue is CustomAttributeArgument attributeArgument)
{
- returnvalue = "null";
- return true;
+ return Format(attributeArgument.Type, attributeArgument.Value);
}
- if (valueType.FullName == "System.Type")
+
+ return FormatValue(argumentType, argumentValue);
+ }
+
+ // The types of positional and named parameters for an attribute class are limited to the attribute parameter types, which are:
+ // https://github.com/dotnet/csharplang/blob/main/spec/attributes.md#attribute-parameter-types
+ private string FormatValue(TypeReference argumentType, object argumentValue)
+ {
+ if (IsNull(argumentValue))
{
- var vTypeRef = v as TypeReference;
- if (vTypeRef != null)
- returnvalue = "typeof(" + NativeTypeManager.GetTranslatedName (vTypeRef) + ")"; // TODO: drop NS handling
- else
- returnvalue = "typeof(" + v.ToString () + ")";
+ return "null";
+ }
- return true;
+ if (IsArrayType(argumentType, argumentValue))
+ {
+ return ConvertToArrayType(argumentType, argumentValue);
}
- if (valueType.FullName == "System.String")
+
+ if (IsTypeType(argumentType, argumentValue))
{
- returnvalue = "\"" + FilterSpecialChars (v.ToString ()) + "\"";
- return true;
+ return ConvertToType(argumentType, argumentValue);
}
- if (valueType.FullName == "System.Char")
+
+ if (IsStringType(argumentType, argumentValue))
{
- returnvalue = "'" + FilterSpecialChars (v.ToString ()) + "'";
- return true;
+ return ConvertToString(argumentType, argumentValue);
}
- if (v is Boolean)
+
+ if (IsCharType(argumentType, argumentValue))
{
- returnvalue = (bool)v ? "true" : "false";
- return true;
+ return ConvertToChar(argumentType, argumentValue);
}
- TypeDefinition valueDef = type.Definition;
- if (valueDef == null || !valueDef.IsEnum)
+ if (IsBoolType(argumentType, argumentValue))
{
- returnvalue = v.ToString ();
- return true;
+ return ConvertToBool(argumentType, argumentValue);
}
- string typename = MDocUpdater.GetDocTypeFullName (valueType);
- var values = GetEnumerationValues (valueDef);
- long c = ToInt64 (v);
- if (values.ContainsKey (c))
+ if (IsEnumType(argumentType, argumentValue))
{
- returnvalue = typename + "." + values[c];
- return true;
+ return ConvertToEnum(argumentType, argumentValue);
+ }
+
+ return ConvertUnhandledTypeToString(argumentValue);
+ }
+
+ private bool IsNull(object argumentValue)
+ {
+ return argumentValue == null;
+ }
+
+ private bool IsEnumType(TypeReference argumentType, object argumentValue)
+ {
+ return argumentType.Resolve().IsEnum;
+ }
+
+ private bool IsTypeType(TypeReference argumentType, object argumentValue)
+ {
+ return IsType("System.Type", argumentType, argumentValue);
+ }
+
+ private bool IsStringType(TypeReference argumentType, object argumentValue)
+ {
+ return IsType("System.String", argumentType, argumentValue);
+ }
+
+ private bool IsCharType(TypeReference argumentType, object argumentValue)
+ {
+ return IsType("System.Char", argumentType, argumentValue);
+ }
+
+ private bool IsBoolType(TypeReference argumentType, object argumentValue)
+ {
+ return IsType("System.Boolean", argumentType, argumentValue);
+ }
+
+ private bool IsType(string typeFullName, TypeReference argumentType, object argumentValue)
+ {
+ return argumentType.FullName.Equals(typeFullName);
+ }
+
+ private bool IsArrayType(TypeReference argumentType, object argumentValue)
+ {
+ return argumentType is ArrayType && argumentValue is CustomAttributeArgument[];
+ }
+
+ private string ConvertToArrayType(TypeReference argumentType, object argumentValue)
+ {
+ var arrayType = argumentType as ArrayType;
+ var arrayArguments = argumentValue as CustomAttributeArgument[];
+ var arrayTypeFullName = $"new {arrayType.FullName}{(arrayType.FullName.EndsWith("[]") ? "" : "[]")}";
+ var arrayArgumentValues = arrayArguments.Select(i => FormatValue(i.Type, i.Value));
+
+ return $"{arrayTypeFullName} {{ {string.Join(", ", arrayArgumentValues)} }}";
+ }
+
+ private bool IsFlagsEnum(TypeReference argumentType, object argumentValue)
+ {
+ var argumentTypeDefinition = argumentType.Resolve();
+ var isApplyFlagsAttributeEnumType = argumentTypeDefinition.CustomAttributes.Any(a => a.AttributeType.FullName == "System.FlagsAttribute");
+ var isNotApplyAttributeFlagsEnumType = IsNotApplyAttributeFlagsEnumType(argumentTypeDefinition, argumentValue);
+
+ return isApplyFlagsAttributeEnumType || isNotApplyAttributeFlagsEnumType;
+ }
+
+ /// <summary>
+ /// We have a few legacy flags enum type not apply FlagsAttribute to it.
+ /// For example, Microsoft.JScript.JSFunctionAttributeEnum in .NET Framework 1.1 but the issue has been fixed in the newer version.
+ /// </summary>
+ private bool IsNotApplyAttributeFlagsEnumType(TypeDefinition argumentType, object argumentValue)
+ {
+ (var typeFullName, var enumConstants, var enumValue) = ExtractEnumTypeData(argumentType, argumentValue);
+ if (enumConstants.ContainsKey(enumValue))
+ {
+ // Not is a combinations of values.
+ return false;
+ }
+
+ var flagsEnumValues = enumConstants.Keys.ToList();
+ flagsEnumValues.Remove(0); // The zero value is not a valid flags enum value.
+
+ // The following example is an invalid and valid flags enum type.
+ // None = 0, Read = 1, Write = 2, ReadWrite = 3 maybe is a flags enum type but sometimes it is not.
+ // Read = 1, Write = 2, Open = 4, Close = 8 actually is a flags enum type.
+ var minFlagsEnumValueCount = 4;
+ if (flagsEnumValues.Count() >= minFlagsEnumValueCount)
+ {
+ long allEnumLogicalOrValue = 0;
+ foreach (var item in flagsEnumValues)
+ {
+ allEnumLogicalOrValue = allEnumLogicalOrValue | item;
+ }
+
+ var isFlagsEnumType = !flagsEnumValues.Any(i => (i & allEnumLogicalOrValue) != i);
+ var isCombinationValue = flagsEnumValues.Count(i => (i & enumValue) != i) > 1;
+
+ return isFlagsEnumType && isCombinationValue;
}
- returnvalue = null;
return false;
}
- internal static IDictionary<long, string> GetEnumerationValues(TypeDefinition type)
+ private bool IsApplePlatformEnum(TypeReference argumentType, object argumentValue)
+ {
+ return MDocUpdater.GetDocTypeFullName(argumentType).Contains("ObjCRuntime.Platform");
+ }
+
+ private string ConvertToType(TypeReference argumentType, object argumentValue)
{
+ var valueResult = GetArgumentValue("System.Type", argumentType, argumentValue);
+ var typeFullName = MDocUpdater.GetDocTypeFullName((TypeReference)valueResult, isTypeofOperator: true);
+
+ return $"typeof({typeFullName})";
+ }
+
+ private string ConvertToString(TypeReference argumentType, object argumentValue)
+ {
+ var valueResult = GetArgumentValue("System.String", argumentType, argumentValue);
+ if (valueResult == null)
+ {
+ return "null";
+ }
+
+ return string.Format("\"{0}\"", FilterSpecialChars(valueResult.ToString()));
+ }
+
+ private string ConvertToBool(TypeReference argumentType, object argumentValue)
+ {
+ return GetArgumentValue("System.Boolean", argumentType, argumentValue).ToString().ToLower();
+ }
+
+ private string ConvertToChar(TypeReference argumentType, object argumentValue)
+ {
+ var valueResult = GetArgumentValue("System.Char", argumentType, argumentValue).ToString();
+
+ return string.Format("'{0}'", FilterSpecialChars(valueResult));
+ }
+
+ private string ConvertUnhandledTypeToString(object argumentValue)
+ {
+ return argumentValue.ToString();
+ }
+
+ private string ConvertToEnum(TypeReference argumentType, object argumentValue)
+ {
+ if (IsFlagsEnum(argumentType, argumentValue))
+ {
+ if (IsApplePlatformEnum(argumentType, argumentValue))
+ {
+ return ConvertToApplePlatformEnum(argumentType, argumentValue);
+ }
+
+ return ConvertToFlagsEnum(argumentType, argumentValue);
+ }
+
+ return ConvertToNormalEnum(argumentType, argumentValue);
+ }
+
+ private string ConvertToNormalEnum(TypeReference argumentType, object argumentValue)
+ {
+ (var typeFullName, var enumConstants, var enumValue) = ExtractEnumTypeData(argumentType, argumentValue);
+ if (enumConstants.ContainsKey(enumValue))
+ {
+ return typeFullName + "." + enumConstants[enumValue];
+ }
+
+ return ConvertToUnknownEnum(argumentType, argumentValue);
+ }
+
+ private string ConvertToUnknownEnum(TypeReference argumentType, object argumentValue)
+ {
+ (var typeFullName, var enumConstants, var enumValue) = ExtractEnumTypeData(argumentType, argumentValue);
+
+ return $"({typeFullName}) {enumValue}";
+ }
+
+ private string ConvertToFlagsEnum(TypeReference argumentType, object argumentValue)
+ {
+ (var typeFullName, var enumConstants, var enumValue) = ExtractEnumTypeData(argumentType, argumentValue);
+ if (enumConstants.ContainsKey(enumValue))
+ {
+ // Not is a combinations of values.
+ return $"{typeFullName}.{enumConstants[enumValue]}";
+ }
+
+ var flagsEnumValues = enumConstants.Keys.Where(i => (enumValue & i) == i && i != 0).ToList();
+ var duplicateEnumValues = flagsEnumValues.Where(i => flagsEnumValues.Any(a => (a & i) == i && a > i));
+
+ flagsEnumValues.RemoveAll(i => duplicateEnumValues.Contains(i));
+ var flagsEnumNames = flagsEnumValues
+ .Select(i => $"{typeFullName}.{enumConstants[i]}")
+ .OrderBy(val => val) // to maintain a consistent list across frameworks/versions
+ .ToArray();
+
+ if (flagsEnumNames.Length > 0)
+ {
+ return string.Join(" | ", flagsEnumNames);
+ }
+
+ return ConvertToUnknownEnum(argumentType, argumentValue);
+ }
+
+ private string ConvertToApplePlatformEnum(TypeReference argumentType, object argumentValue)
+ {
+ (var typeFullName, var enumConstants, var enumValue) = ExtractEnumTypeData(argumentType, argumentValue);
+ if (enumConstants.ContainsKey(enumValue))
+ {
+ return typeFullName + "." + enumConstants[enumValue];
+ }
+
+ return FormatApplePlatformEnum(enumValue);
+ }
+
+ private (string typeFullName, IDictionary<long, string> enumConstants, long enumValue) ExtractEnumTypeData(TypeReference argumentType, object argumentValue)
+ {
+ var argumentTypeDefinition = argumentType.Resolve();
+ var typeFullName = MDocUpdater.GetDocTypeFullName(argumentTypeDefinition);
+ var enumConstants = GetEnumerationValues(argumentTypeDefinition);
+ var enumValue = ToInt64(argumentValue);
+
+ return (typeFullName, enumConstants, enumValue);
+ }
+
+ private string FormatApplePlatformEnum(long enumValue)
+ {
+ int iosarch, iosmajor, iosminor, iossubminor;
+ int macarch, macmajor, macminor, macsubminor;
+ GetEncodingiOS(enumValue, out iosarch, out iosmajor, out iosminor, out iossubminor);
+ GetEncodingMac((ulong)enumValue, out macarch, out macmajor, out macminor, out macsubminor);
+
+ if (iosmajor == 0 & iosminor == 0 && iossubminor == 0)
+ {
+ return FormatApplePlatformEnumValue("Mac", macarch, macmajor, macminor, macsubminor);
+ }
+
+ if (macmajor == 0 & macminor == 0 && macsubminor == 0)
+ {
+ return FormatApplePlatformEnumValue("iOS", iosarch, iosmajor, iosminor, iossubminor);
+ }
+
+ return string.Format("(Platform){0}", enumValue);
+ }
+
+ private string FormatApplePlatformEnumValue(string plat, int arch, int major, int minor, int subminor)
+ {
+ var archstring = string.Empty;
+ switch (arch)
+ {
+ case 1:
+ archstring = "32";
+ break;
+ case 2:
+ archstring = "64";
+ break;
+ }
+
+ return string.Format("Platform.{4}_{0}_{1}{2} | Platform.{4}_Arch{3}",
+ major,
+ minor,
+ subminor == 0 ? "" : "_" + subminor.ToString(),
+ archstring,
+ plat
+ );
+ }
+
+ private void GetEncodingiOS(long entireLong, out int archindex, out int major, out int minor, out int subminor)
+ {
+ long lowerBits = entireLong & 0xffffffff;
+ int lowerBitsAsInt = (int)lowerBits;
+ GetEncodingApplePlatform(lowerBitsAsInt, out archindex, out major, out minor, out subminor);
+ }
+
+ private void GetEncodingMac(ulong entireLong, out int archindex, out int major, out int minor, out int subminor)
+ {
+ ulong higherBits = entireLong & 0xffffffff00000000;
+ int higherBitsAsInt = (int)((higherBits) >> 32);
+ GetEncodingApplePlatform(higherBitsAsInt, out archindex, out major, out minor, out subminor);
+ }
+
+ private void GetEncodingApplePlatform(Int32 encodedBits, out int archindex, out int major, out int minor, out int subminor)
+ {
+ // format is AAJJNNSS
+ archindex = (int)((encodedBits & 0xFF000000) >> 24);
+ major = (int)((encodedBits & 0x00FF0000) >> 16);
+ minor = (int)((encodedBits & 0x0000FF00) >> 8);
+ subminor = (int)((encodedBits & 0x000000FF) >> 0);
+ }
+
+ private object GetArgumentValue(string argumentTypeFullName, TypeReference argumentType, object argumentValue)
+ {
+ if (argumentType.FullName.Equals(argumentTypeFullName))
+ {
+ return argumentValue;
+ }
+
+ throw new ArgumentException($"The argument type does not match {argumentTypeFullName}.");
+ }
+
+ private IDictionary<long, string> GetEnumerationValues(TypeDefinition argumentType)
+ {
+ var enumValues = from f in argumentType.Fields
+ where !(f.IsRuntimeSpecialName || f.IsSpecialName)
+ select f;
+
var values = new Dictionary<long, string>();
- foreach (var f in
- (from f in type.Fields
- where !(f.IsRuntimeSpecialName || f.IsSpecialName)
- select f))
+ foreach (var item in enumValues)
{
- values[ToInt64(f.Constant)] = f.Name;
+ values[ToInt64(item.Constant)] = item.Name;
}
+
return values;
}
- internal static long ToInt64(object value)
+ private long ToInt64(object value)
{
if (value is ulong)
return (long)(ulong)value;
+
return Convert.ToInt64(value);
}
- public static string FilterSpecialChars(string value)
+ private string FilterSpecialChars(string value)
{
- return value.Replace("\0", "\\0")
+ return value
+ .Replace("\0", "\\0")
.Replace("\t", "\\t")
.Replace("\n", "\\n")
.Replace("\r", "\\r")
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/DefaultAttributeValueFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/DefaultAttributeValueFormatter.cs
deleted file mode 100644
index d0a2f8ec..00000000
--- a/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/DefaultAttributeValueFormatter.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace Mono.Documentation.Updater
-{
- /// <summary>The final value formatter in the pipeline ... if no other formatter formats the value,
- /// then this one will serve as the default implementation.</summary>
- class DefaultAttributeValueFormatter : AttributeValueFormatter
- {
- public override bool TryFormatValue (object v, ResolvedTypeInfo type, out string returnvalue)
- {
- returnvalue = "(" + MDocUpdater.GetDocTypeFullName (type.Reference) + ") " + FilterSpecialChars(v.ToString ());
- return true;
- }
- }
-} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/StandardFlagsEnumFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/StandardFlagsEnumFormatter.cs
deleted file mode 100644
index 16a1ebe0..00000000
--- a/mdoc/Mono.Documentation/Updater/Formatters/AttributeFormatters/StandardFlagsEnumFormatter.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Linq;
-
-using Mono.Cecil;
-
-namespace Mono.Documentation.Updater
-{
- /// <summary>Flags enum formatter that assumes powers of two values.</summary>
- /// <remarks>As described here: https://msdn.microsoft.com/en-us/library/vstudio/ms229062(v=vs.100).aspx</remarks>
- class StandardFlagsEnumFormatter : AttributeValueFormatter
- {
- public override bool TryFormatValue (object v, ResolvedTypeInfo type, out string returnvalue)
- {
- TypeReference valueType = type.Reference;
- TypeDefinition valueDef = type.Definition;
- if (valueDef.CustomAttributes.Any (ca => ca.AttributeType.FullName == "System.FlagsAttribute"))
- {
-
- string typename = MDocUpdater.GetDocTypeFullName (valueType);
- var values = GetEnumerationValues (valueDef);
- long c = ToInt64 (v);
- returnvalue = string.Join (" | ",
- (from i in values.Keys
- where (c & i) == i && i != 0
- select typename + "." + values[i])
- .DefaultIfEmpty (c.ToString ())
- .OrderBy (val => val) // to maintain a consistent list across frameworks/versions
- .ToArray ());
-
- return true;
- }
-
- returnvalue = null;
- return false;
- }
- }
-} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs
index 34749cc5..7d0aa7c8 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CSharpFullMemberFormatter.cs
@@ -107,7 +107,7 @@ namespace Mono.Documentation.Updater.Formatters
return buf;
}
- protected override string GetTypeName (TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = true)
+ protected override string GetTypeName (TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = true, bool isTypeofOperator = false)
{
GenericInstanceType genType = type as GenericInstanceType;
if (IsSpecialGenericNullableValueType (genType))
@@ -316,10 +316,11 @@ namespace Mono.Documentation.Updater.Formatters
for (int i = 1; i < constraints.Count; ++i)
buf.Append (", ").Append (GetTypeName (constraints[i]));
#endif
+
}
if (isnew && !isvt)
{
- if (comma)
+ if (comma || constraints.Count > 0)
buf.Append (", ");
buf.Append ("new()");
}
@@ -768,4 +769,4 @@ namespace Mono.Documentation.Updater.Formatters
return buf.ToString ();
}
}
-} \ No newline at end of file
+}
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxFullMemberFormatter.cs
index efba11be..9415680f 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxFullMemberFormatter.cs
@@ -62,6 +62,7 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
"System.String",
"System.ValueType",
"System.Enum",
+ "System.Guid",
};
protected virtual IList<string> GetAllowedTypes()
@@ -106,7 +107,7 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
if (t.Contains(' '))
{
splitType = t.Split(' ');
- typeToCompare = splitType[0];
+ typeToCompare = splitType[0].Trim('&');
}
switch (typeToCompare)
@@ -125,10 +126,18 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
case "System.Boolean": typeToCompare = "bool"; break;
case "System.Char": typeToCompare = "char16"; break;
case "System.Void": typeToCompare = "void"; break;
+ case "System.Guid": typeToCompare = "Platform::Guid"; break;
case "System.String": typeToCompare = "Platform::String"; break;
case "System.Object": typeToCompare = "Platform::Object"; break;
case "System.Type": typeToCompare = "Platform::Type"; break;
case "System.Attribute": typeToCompare = "Platform::Metadata::Attribute"; break;
+ case "Windows.Foundation.Numerics.Matrix3x2": typeToCompare = "float3x2"; break;
+ case "Windows.Foundation.Numerics.Matrix4x4": typeToCompare = "float4x4"; break;
+ case "Windows.Foundation.Numerics.Plane": typeToCompare = "plane"; break;
+ case "Windows.Foundation.Numerics.Quaternion": typeToCompare = "quaternion"; break;
+ case "Windows.Foundation.Numerics.Vector2": typeToCompare = "float2"; break;
+ case "Windows.Foundation.Numerics.Vector3": typeToCompare = "float3"; break;
+ case "Windows.Foundation.Numerics.Vector4": typeToCompare = "float4"; break;
}
if (splitType != null)
@@ -200,9 +209,10 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
buf.Append(GetTypeKind(type));
buf.Append(" ");
- buf.Append(GetCppType(type.FullName) == null
+ var cppType = GetCppType(type.FullName);
+ buf.Append(cppType == null
? GetNameWithOptions(type, false, false)
- : type.Name);
+ : cppType);
if (type.IsAbstract && !type.IsInterface)
buf.Append(" abstract");
@@ -330,7 +340,7 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
}
}
- if (allowedTypes.Contains(tref.FullName.Split(' ')[0]) || CppCxSpecificNamespases.Contains(tref.Namespace))
+ if (allowedTypes.Contains(tref.FullName.Split(' ')[0].Trim('&')) || CppCxSpecificNamespases.Contains(tref.Namespace))
{
return true;
}
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs
index 757b6431..9bb44003 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs
@@ -112,11 +112,6 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
string typeFullName = type.FullName;
if (string.IsNullOrWhiteSpace (typeFullName))
return buf;
-
- if (!typeFullName.StartsWith ("System."))
- {
- return base.AppendTypeName(buf, type, context);
- }
string cppType = GetCppType(typeFullName);
if (cppType != null)
@@ -181,9 +176,10 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
buf.Append(GetTypeKind (type));
buf.Append(" ");
- buf.Append(GetCppType(type.FullName) == null
+ var cppType = GetCppType(type.FullName);
+ buf.Append(cppType == null
? GetNameWithOptions(type, false, false)
- : type.Name);
+ : cppType);
if (type.IsAbstract && !type.IsInterface)
buf.Append(" abstract");
@@ -553,7 +549,7 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
return AppendConstraints (buf, method.GenericParameters);
}
- protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false)
+ protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false, bool isTypeofOperator = false)
{
List<TypeReference> decls = DocUtils.GetDeclaringTypes(
type is GenericInstanceType ? type.GetElementType() : type);
@@ -733,7 +729,10 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
if (IsParamsParameter(parameter))
buf.AppendFormat ("... ");
- buf.Append(GetTypeNameWithOptions(parameter.ParameterType, AppendHatOnReturn)).Append(" ");
+ buf.Append(GetTypeNameWithOptions(parameter.ParameterType, AppendHatOnReturn));
+ if (!buf.ToString().EndsWith(" "))
+ buf.Append(" ");
+
buf.Append(parameter.Name);
return buf;
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtFullMemberFormatter.cs
index a7f7d3ec..b2591b44 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtFullMemberFormatter.cs
@@ -10,7 +10,7 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
public class CppWinRtFullMemberFormatter : CppCxFullMemberFormatter
{
protected override bool AppendHatOnReturn => false;
- protected override string HatModifier => $" const{RefTypeModifier}";
+ protected override string HatModifier => $" const&";
public override string Language => Consts.CppWinRt;
protected override string RefTypeModifier => " &";
@@ -41,7 +41,7 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
if (t.Contains(' '))
{
splitType = t.Split(' ');
- typeToCompare = splitType[0];
+ typeToCompare = splitType[0].Trim('&');
foreach (var str in splitType)
{
@@ -59,19 +59,26 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
case "System.Int16": typeToCompare = "short"; break;
case "System.Int32": typeToCompare = "int"; break;
case "System.Int64": typeToCompare = "long"; break;
- case "System.UInt16": typeToCompare = "unsigned short"; break;
+ case "System.UInt16": typeToCompare = "uint16_t"; break;
case "System.UInt32": typeToCompare = "uint32_t"; break;
case "System.UInt64": typeToCompare = "uint64_t"; break;
-
case "System.Single": typeToCompare = "float"; break;
case "System.Double": typeToCompare = "double"; break;
-
case "System.Boolean": typeToCompare = "bool"; break;
case "System.Char": typeToCompare = "char"; break;
case "System.Void": typeToCompare = "void"; break;
+
//API specific type is "winrt::hstring"; but c++ in built type is better variant
case "System.String": typeToCompare = "winrt::hstring"; break;
+ case "System.Guid": typeToCompare = "winrt::guid"; break;
case "System.Object": typeToCompare = "winrt::Windows::Foundation::IInspectable"; break;
+ case "Windows.Foundation.Numerics.Matrix3x2": typeToCompare = "float3x2"; break;
+ case "Windows.Foundation.Numerics.Matrix4x4": typeToCompare = "float4x4"; break;
+ case "Windows.Foundation.Numerics.Plane": typeToCompare = "plane"; break;
+ case "Windows.Foundation.Numerics.Quaternion": typeToCompare = "quaternion"; break;
+ case "Windows.Foundation.Numerics.Vector2": typeToCompare = "float2"; break;
+ case "Windows.Foundation.Numerics.Vector3": typeToCompare = "float3"; break;
+ case "Windows.Foundation.Numerics.Vector4": typeToCompare = "float4"; break;
}
if (splitType != null)
@@ -98,7 +105,12 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
buf.AppendFormat("... ");
}
- buf.Append(GetTypeNameWithOptions(parameter.ParameterType, !AppendHatOnReturn)).Append(" ");
+ buf.Append(GetTypeName(parameter.ParameterType, EmptyAttributeParserContext.Empty()));
+ if (!parameter.ParameterType.IsByReference && !parameter.ParameterType.IsPointer)
+ {
+ buf.Append(parameter.IsOut ? RefTypeModifier : HatModifier);
+ }
+ buf.Append(" ");
buf.Append(parameter.Name);
if (parameter.HasDefault && parameter.IsOptional && parameter.HasConstant)
@@ -125,7 +137,7 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
protected override StringBuilder AppendArrayTypeName(StringBuilder buf, TypeReference type,
IAttributeParserContext context)
{
- buf.Append("std::Array <");
+ buf.Append("winrt::array_view <");
var item = type is TypeSpecification spec ? spec.ElementType : type.GetElementType();
_AppendTypeName(buf, item, context);
@@ -159,14 +171,27 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
StringBuilder buf = new StringBuilder();
if (property.GetMethod != null)
- buf.AppendLine($"{returnType} {apiName}();").AppendLine();
+ {
+ if (property.GetMethod.IsStatic)
+ buf.AppendLine($"static {returnType} {apiName}();").AppendLine();
+ else
+ buf.AppendLine($"{returnType} {apiName}();").AppendLine();
+ }
if (property.SetMethod != null) {
string paramName = property.SetMethod.Parameters.First().Name;
+ if (property.SetMethod.IsStatic)
+ {
+ buf.Append("static ");
+ }
if (string.IsNullOrWhiteSpace(paramName))
+ {
buf.AppendLine($"void {apiName}({returnType});");
+ }
else
+ {
buf.AppendLine($"void {apiName}({returnType} {paramName});");
+ }
}
return buf.ToString().Replace("\r\n", "\n").Trim();
}
@@ -174,15 +199,20 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
protected override string GetEventDeclaration(EventDefinition e)
{
string apiName = e.Name, typeName = GetTypeNameWithOptions(e.EventType, AppendHatOnReturn);
+ var rtnAutoEventRevoker = e.DeclaringType.Name + NestedTypeSeparator + apiName;
StringBuilder buf = new StringBuilder();
//if (AppendVisibility(buf, e.AddMethod).Length == 0)
+ var method = e.AddMethod;
+ string modifiers = string.Empty;
+ if (method.IsStatic)
+ modifiers += "static ";
buf.AppendLine("// Register");
- buf.AppendLine($"event_token {apiName}({typeName} const& handler) const;");
+ buf.AppendLine($"{modifiers}event_token {apiName}({typeName} const& handler) const;");
buf.AppendLine().AppendLine("// Revoke with event_token");
- buf.AppendLine($"void {apiName}(event_token const* cookie) const;");
+ buf.AppendLine($"{modifiers}void {apiName}(event_token const* cookie) const;");
buf.AppendLine().AppendLine("// Revoke with event_revoker");
- buf.Append($"{apiName}_revoker {apiName}(auto_revoke_t, {typeName} const& handler) const;");
+ buf.Append($"{modifiers}{rtnAutoEventRevoker}_revoker {apiName}(auto_revoke_t, {typeName} const& handler) const;");
return buf.ToString().Replace("\r\n", "\n");
}
@@ -199,12 +229,11 @@ namespace Mono.Documentation.Updater.Formatters.CppFormatters
buf.Append(GetTypeKind(type));
buf.Append(" ");
- buf.Append(GetCppType(type.FullName) == null
+ var cppType = GetCppType(type.FullName);
+ buf.Append(cppType == null
? GetNameWithOptions(type, false, false)
- : type.Name);
+ : cppType);
- if (type.IsAbstract && !type.IsInterface)
- buf.Append(" abstract");
if (type.IsSealed && !DocUtils.IsDelegate(type) && !type.IsValueType)
buf.Append(" final");
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs
index 0589c7f9..25b78bf8 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs
@@ -308,7 +308,7 @@ namespace Mono.Documentation.Updater
return "class";
}
- protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false)
+ protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false, bool isTypeofOperator = false)
{
List<TypeReference> decls = DocUtils.GetDeclaringTypes(
type is GenericInstanceType ? type.GetElementType() : type);
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/ILFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/ILFullMemberFormatter.cs
index 1ad73548..ad30e238 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/ILFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/ILFullMemberFormatter.cs
@@ -203,7 +203,7 @@ namespace Mono.Documentation.Updater.Formatters
return buf.ToString ();
}
- protected override StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false)
+ protected override StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false, bool isTypeofOperator = false)
{
List<TypeReference> decls = DocUtils.GetDeclaringTypes (
type is GenericInstanceType ? type.GetElementType () : type);
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs
index 8664d1ba..dabceb3e 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs
@@ -151,7 +151,7 @@ namespace Mono.Documentation.Updater.Formatters
return CamelCase(method.Name);
}
- protected override string GetTypeName(TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false)
+ protected override string GetTypeName(TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false, bool isTypeofOperator = false)
{
int n = type.Name.IndexOf("`");
if (n >= 0)
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs
index faf87874..d5f634e1 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs
@@ -1,12 +1,10 @@
-using System;
+using Mono.Cecil;
+using Mono.Documentation.Util;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
-
-using Mono.Documentation.Util;
-using Mono.Cecil;
-
namespace Mono.Documentation.Updater
{
public abstract class MemberFormatter
@@ -25,16 +23,16 @@ namespace Mono.Documentation.Updater
get { return "//"; }
}
- public string GetName (MemberReference member, bool appendGeneric = true, bool useTypeProjection = true)
+ public string GetName (MemberReference member, bool appendGeneric = true, bool useTypeProjection = true, bool isTypeofOperator = false)
{
- return GetName (member, EmptyAttributeParserContext.Empty(), appendGeneric, useTypeProjection: useTypeProjection);
+ return GetName (member, EmptyAttributeParserContext.Empty(), appendGeneric, useTypeProjection, isTypeofOperator);
}
- public virtual string GetName (MemberReference member, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = true)
+ public virtual string GetName (MemberReference member, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = true, bool isTypeofOperator = false)
{
TypeReference type = member as TypeReference;
if (type != null)
- return GetTypeName (type, context, appendGeneric, useTypeProjection: useTypeProjection);
+ return GetTypeName (type, context, appendGeneric, useTypeProjection, isTypeofOperator);
MethodReference method = member as MethodReference;
if (method != null && method.Name == ".ctor") // method.IsConstructor
return GetConstructorName (method);
@@ -58,12 +56,12 @@ namespace Mono.Documentation.Updater
return GetTypeName (type, EmptyAttributeParserContext.Empty(), appendGeneric, useTypeProjection: useTypeProjection);
}
- protected virtual string GetTypeName (TypeReference type, IAttributeParserContext context, bool appendGeneric=true, bool useTypeProjection = true)
+ protected virtual string GetTypeName (TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = true, bool isTypeofOperator = false)
{
if (type == null)
throw new ArgumentNullException (nameof (type));
- var typeName = _AppendTypeName (new StringBuilder (type.Name.Length), type, context, appendGeneric, useTypeProjection: useTypeProjection).ToString ();
+ var typeName = _AppendTypeName (new StringBuilder (type.Name.Length), type, context, appendGeneric, useTypeProjection, isTypeofOperator).ToString ();
return RemoveMod (typeName);
}
@@ -138,7 +136,7 @@ namespace Mono.Documentation.Updater
get => true;
}
- protected StringBuilder _AppendTypeName (StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection =false)
+ protected StringBuilder _AppendTypeName (StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false, bool isTypeofOperator = false)
{
if (type == null)
return buf;
@@ -206,7 +204,7 @@ namespace Mono.Documentation.Updater
AppendFullTypeName (interimBuilder, type, context);
return SetBuffer(buf, interimBuilder, useTypeProjection: useTypeProjection);
}
- AppendGenericType (interimBuilder, type, context, appendGeneric, useTypeProjection: useTypeProjection);
+ AppendGenericType (interimBuilder, type, context, appendGeneric, useTypeProjection, isTypeofOperator);
return SetBuffer(buf, interimBuilder, useTypeProjection: useTypeProjection);
}
@@ -320,7 +318,7 @@ namespace Mono.Documentation.Updater
get { return "."; }
}
- protected virtual StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = true)
+ protected virtual StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = true, bool isTypeofOperator = false)
{
int argIdx = 0;
int prev = 0;
@@ -344,22 +342,54 @@ namespace Mono.Documentation.Updater
if (appendGeneric && c > 0)
{
buf.Append (GenericTypeContainer[0]);
- var origState = MemberFormatterState;
- MemberFormatterState = MemberFormatterState.WithinGenericTypeParameters;
- AppendGenericTypeParameter (buf, genArgs[argIdx++], context, useTypeProjection);
- for (int i = 1; i < c; ++i)
+
+ var currentTypeArguments = genArgs.Skip(argIdx).Take(c);
+ if (IsTypeOfOperatorWithUnboundGenericType(decl, currentTypeArguments, isTypeofOperator))
{
- buf.Append (",");
+ buf.Append(string.Join(string.Empty, Enumerable.Repeat(",", currentTypeArguments.Count() - 1)));
+ }
+ else
+ {
+ var origState = MemberFormatterState;
+ MemberFormatterState = MemberFormatterState.WithinGenericTypeParameters;
AppendGenericTypeParameter (buf, genArgs[argIdx++], context, useTypeProjection);
+ for (int i = 1; i < c; ++i)
+ {
+ buf.Append (",");
+ AppendGenericTypeParameter (buf, genArgs[argIdx++], context, useTypeProjection);
+ }
+
+ MemberFormatterState = origState;
}
- MemberFormatterState = origState;
buf.Append (GenericTypeContainer[1]);
}
}
+
return buf;
}
+ private bool IsTypeOfOperatorWithUnboundGenericType(TypeReference type, IEnumerable<TypeReference> genericArguments, bool isTypeofOperator)
+ {
+ if (isTypeofOperator)
+ {
+ var argumentCount = genericArguments.Count() > 0 ? genericArguments.Count().ToString() : string.Empty;
+ var genericTypeSeparator = $"`{argumentCount}";
+ var genericTypeSeparatorIndex = type.FullName.LastIndexOf(genericTypeSeparator);
+
+ var leftAngleBracketIndex = type.FullName.IndexOf("<", genericTypeSeparatorIndex);
+ var validLeftAngleBracketIndex = genericTypeSeparatorIndex + genericTypeSeparator.Length + 1;
+
+ // If the type is an unbound generic type that type hasn't angle brackets after its full name.
+ var notExistParameterType = genericTypeSeparatorIndex >= 0 && leftAngleBracketIndex != validLeftAngleBracketIndex;
+ var notPassParameterType = genericArguments.All(i => i is GenericParameter);
+
+ return notExistParameterType && notPassParameterType;
+ }
+
+ return false;
+ }
+
private void AppendGenericTypeParameter (StringBuilder buf, TypeReference type, IAttributeParserContext context, bool useTypeProjection = true)
{
var isNullableType = false;
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs
index 4bb986fc..2a5dfa51 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs
@@ -102,7 +102,7 @@ namespace Mono.Documentation.Updater
return buf.Append (ArrayDelimeters[1]);
}
- protected override StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false)
+ protected override StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false, bool isTypeofOperator = false)
{
if (!AddTypeCount)
base.AppendGenericType (buf, type, context);
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/VBFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/VBFullMemberFormatter.cs
index 92a74cec..6d9761f8 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/VBFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/VBFullMemberFormatter.cs
@@ -209,7 +209,7 @@ namespace Mono.Documentation.Updater
}
}
- protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false)
+ protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, IAttributeParserContext context, bool appendGeneric = true, bool useTypeProjection = false, bool isTypeofOperator = false)
{
List<TypeReference> decls = DocUtils.GetDeclaringTypes(
type is GenericInstanceType ? type.GetElementType() : type);
diff --git a/mdoc/Mono.Documentation/Updater/Frameworks/AssemblySet.cs b/mdoc/Mono.Documentation/Updater/Frameworks/AssemblySet.cs
index ce46d488..533f221c 100644
--- a/mdoc/Mono.Documentation/Updater/Frameworks/AssemblySet.cs
+++ b/mdoc/Mono.Documentation/Updater/Frameworks/AssemblySet.cs
@@ -228,5 +228,10 @@ namespace Mono.Documentation.Updater.Frameworks
else
return new HashSet<MDocResolver.TypeForwardEventArgs>();
}
+
+ public bool IsTypeForwardingTo(FrameworkTypeEntry typeEntry)
+ {
+ return forwardedTypesTo.ContainsKey(typeEntry.Name);
+ }
}
}
diff --git a/mdoc/Mono.Documentation/Updater/ResolvedTypeInfo.cs b/mdoc/Mono.Documentation/Updater/ResolvedTypeInfo.cs
deleted file mode 100644
index 0db9b6da..00000000
--- a/mdoc/Mono.Documentation/Updater/ResolvedTypeInfo.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-
-using Mono.Cecil;
-
-namespace Mono.Documentation.Updater
-{
- class ResolvedTypeInfo
- {
- TypeDefinition typeDef;
-
- public ResolvedTypeInfo (TypeReference value)
- {
- Reference = value;
- }
-
- public TypeReference Reference { get; private set; }
-
- public TypeDefinition Definition
- {
- get
- {
- if (typeDef == null)
- {
- typeDef = Reference.Resolve ();
- }
- return typeDef;
- }
- }
- }
-} \ No newline at end of file
diff --git a/mdoc/Test/ClassEnumeratorECMA.xml b/mdoc/Test/ClassEnumeratorECMA.xml
index 7c7314bc..bc0dea5b 100644
--- a/mdoc/Test/ClassEnumeratorECMA.xml
+++ b/mdoc/Test/ClassEnumeratorECMA.xml
@@ -97,7 +97,7 @@
<MemberSignature Language="JavaScript" Value="function main(cmdArgs)" Usage="CustomNamespace.ClassEnumerator.main(cmdArgs)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static void Main(cli::array &lt;System::String ^&gt; ^ cmdArgs);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; static void Main(Platform::Array &lt;Platform::String ^&gt; ^ cmdArgs);" />
- <MemberSignature Language="C++ WINRT" Value=" static void Main(std::Array &lt;winrt::hstring const &amp;&gt; const &amp; cmdArgs);" />
+ <MemberSignature Language="C++ WINRT" Value=" static void Main(winrt::array_view &lt;winrt::hstring const&amp;&gt; const&amp; cmdArgs);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.65535.65535</AssemblyVersion>
diff --git a/mdoc/Test/DocTest-differentTypeDefinitions.cs b/mdoc/Test/DocTest-differentTypeDefinitions.cs
new file mode 100644
index 00000000..c3c18181
--- /dev/null
+++ b/mdoc/Test/DocTest-differentTypeDefinitions.cs
@@ -0,0 +1,14 @@
+namespace TheNamespace
+{
+ public class TheClass
+ {
+ #if FIRST
+ public TheClass(int arg)
+ {}
+ #endif
+ #if SECOND
+ public TheClass(string arg)
+ {}
+ #endif
+ }
+} \ No newline at end of file
diff --git a/mdoc/Test/DocTest-v1.cs b/mdoc/Test/DocTest-v1.cs
index bd5b52a6..18bf8f3d 100644
--- a/mdoc/Test/DocTest-v1.cs
+++ b/mdoc/Test/DocTest-v1.cs
@@ -649,6 +649,13 @@ namespace Mono.DocTest.Generic {
T Method <U> (T t, U u);
}
+ /// <typeparam name="NGparam">Non-generic param</typeparam>
+ /// <remarks><c>T:Mono.DocTest.CompoundConstraints</c>.</remarks>
+ public class CompoundConstraints<NGparam> where NGparam : class, new()
+ {
+ public static void CompoundConstraintClass<param> () where param : class, new() { }
+ }
+
/// <typeparam name="A">Ako generic param</typeparam>
/// <typeparam name="B">Bko generic param</typeparam>
/// <remarks><c>T:Mono.DocTest.MyList`2</c>.</remarks>
diff --git a/mdoc/Test/en.expected-attached-entities/AttachedEventsAndProperties/AquariumFilter.xml b/mdoc/Test/en.expected-attached-entities/AttachedEventsAndProperties/AquariumFilter.xml
index fa35c654..7570f37a 100644
--- a/mdoc/Test/en.expected-attached-entities/AttachedEventsAndProperties/AquariumFilter.xml
+++ b/mdoc/Test/en.expected-attached-entities/AttachedEventsAndProperties/AquariumFilter.xml
@@ -47,7 +47,7 @@
<MemberSignature Language="F#" Value="member this.NeedsCleaningEvent : System.Windows.RoutedEvent with get, set" Usage="AttachedEventsAndProperties.AquariumFilter.NeedsCleaningEvent" />
<MemberSignature Language="JavaScript" Usage="var routedEvent = AquariumFilter.needsCleaningEvent;&#xA;AquariumFilter.needsCleaningEvent = routedEvent;" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static property System::Windows::RoutedEvent ^ NeedsCleaningEvent { System::Windows::RoutedEvent ^ get(); void set(System::Windows::RoutedEvent ^ value); };" />
- <MemberSignature Language="C++ WINRT" Value="System::Windows::RoutedEvent NeedsCleaningEvent();&#xA;&#xA;void NeedsCleaningEvent(System::Windows::RoutedEvent value);" />
+ <MemberSignature Language="C++ WINRT" Value="static System::Windows::RoutedEvent NeedsCleaningEvent();&#xA;&#xA;static void NeedsCleaningEvent(System::Windows::RoutedEvent value);" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-attached-entities/AttachedEventsAndProperties/AttachedPropertyExample.xml b/mdoc/Test/en.expected-attached-entities/AttachedEventsAndProperties/AttachedPropertyExample.xml
index 3ea1fcf1..684fa0f4 100644
--- a/mdoc/Test/en.expected-attached-entities/AttachedEventsAndProperties/AttachedPropertyExample.xml
+++ b/mdoc/Test/en.expected-attached-entities/AttachedEventsAndProperties/AttachedPropertyExample.xml
@@ -6,7 +6,7 @@
<TypeSignature Language="F#" Value="type AttachedPropertyExample = class" />
<TypeSignature Language="C++ CLI" Value="public ref class AttachedPropertyExample abstract sealed" />
<TypeSignature Language="C++ CX" Value="public ref class AttachedPropertyExample abstract sealed" />
- <TypeSignature Language="C++ WINRT" Value="class AttachedPropertyExample abstract final" />
+ <TypeSignature Language="C++ WINRT" Value="class AttachedPropertyExample final" />
<AssemblyInfo>
<AssemblyName>AttachedEventsAndProperties</AssemblyName>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
@@ -174,7 +174,7 @@
<MemberSignature Language="JavaScript" Usage="var boolean = AttachedPropertyExample.isDuplicated;&#xA;AttachedPropertyExample.isDuplicated = boolean;" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static property bool IsDuplicated { bool get(); void set(bool value); };" />
<MemberSignature Language="C++ CX" Value="public:&#xA; static property bool IsDuplicated { bool get(); void set(bool value); };" />
- <MemberSignature Language="C++ WINRT" Value="bool IsDuplicated();&#xA;&#xA;void IsDuplicated(bool value);" />
+ <MemberSignature Language="C++ WINRT" Value="static bool IsDuplicated();&#xA;&#xA;static void IsDuplicated(bool value);" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/CompoundConstraints`1.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/CompoundConstraints`1.xml
new file mode 100644
index 00000000..a994bff7
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/CompoundConstraints`1.xml
@@ -0,0 +1,67 @@
+<Type Name="CompoundConstraints&lt;NGparam&gt;" FullName="Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;">
+ <TypeSignature Language="C#" Value="public class CompoundConstraints&lt;NGparam&gt; where NGparam : class, new()" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CompoundConstraints`1&lt;class .ctor NGparam&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="NGparam">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="NGparam">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CompoundConstraints ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; CompoundConstraints();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CompoundConstraintClass&lt;param&gt;">
+ <MemberSignature Language="C#" Value="public static void CompoundConstraintClass&lt;param&gt; () where param : class, new();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CompoundConstraintClass&lt;class .ctor param&gt;() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename param&gt;&#xA; where param : class, gcnew() static void CompoundConstraintClass();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="param">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1.xml
index 3a95c108..d7282c63 100644
--- a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1.xml
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1.xml
@@ -120,7 +120,7 @@
<Member MemberName="RefMethod&lt;U&gt;">
<MemberSignature Language="C#" Value="public void RefMethod&lt;U&gt; (ref T t, ref U u);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod&lt;U&gt;(!T&amp; t, !!U&amp; u) cil managed" />
- <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename U&gt;&#xA; void RefMethod(T &amp; t, U &amp; u);" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename U&gt;&#xA; void RefMethod(T &amp; t, U &amp; u);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget.xml
index ab7b139b..ddad4349 100644
--- a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget.xml
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget.xml
@@ -452,6 +452,7 @@
<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, [out] float32&amp; f, valuetype Mono.DocTest.DocValueType&amp; v) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void M1(char16 c, [Runtime::InteropServices::Out] float &amp; f, Mono::DocTest::DocValueType &amp; v);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppcx2/System/Array.xml b/mdoc/Test/en.expected-cppcx2/System/Array.xml
index 964b5fc6..550201f1 100644
--- a/mdoc/Test/en.expected-cppcx2/System/Array.xml
+++ b/mdoc/Test/en.expected-cppcx2/System/Array.xml
@@ -83,7 +83,7 @@
<Member MemberName="Resize&lt;T&gt;">
<MemberSignature Language="C#" Value="public static void Resize&lt;T&gt; (ref T[] array, int newSize);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize&lt;T&gt;(!!T[]&amp; array, int32 newSize) cil managed" />
- <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA; static void Resize(Platform::Array &lt;T&gt; ^ &amp; array, int newSize);" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA; static void Resize(Platform::Array &lt;T&gt; ^ &amp; array, int newSize);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppcx2/index.xml b/mdoc/Test/en.expected-cppcx2/index.xml
index 7f30af16..0573cee6 100644
--- a/mdoc/Test/en.expected-cppcx2/index.xml
+++ b/mdoc/Test/en.expected-cppcx2/index.xml
@@ -35,6 +35,7 @@
<Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="CompoundConstraints`1" DisplayName="CompoundConstraints&lt;NGparam&gt;" Kind="Class" />
<Type Name="Extensions" Kind="Class" />
<Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
<Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
diff --git a/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClass.xml b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClass.xml
index ad0dcc31..b7543278 100644
--- a/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClass.xml
+++ b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClass.xml
@@ -33,7 +33,7 @@
<Member MemberName="Hello">
<MemberSignature Language="C#" Value="public float Hello (int value);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="float Hello(int value);" />
+ <MemberSignature Language="C++ WINRT" Value="float Hello(int const&amp; value);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>DocTest-DropNS-classic</AssemblyName>
diff --git a/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClassExtensions.xml b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClassExtensions.xml
index 00948749..623e21b1 100644
--- a/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClassExtensions.xml
+++ b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClassExtensions.xml
@@ -1,7 +1,7 @@
<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
<TypeSignature Language="C#" Value="public static class MyClassExtensions" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
- <TypeSignature Language="C++ WINRT" Value="class MyClassExtensions abstract final" />
+ <TypeSignature Language="C++ WINRT" Value="class MyClassExtensions final" />
<AssemblyInfo>
<AssemblyName>DocTest-DropNS-classic</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt/MyFramework.MyOtherNamespace/MyOtherClass.xml b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyOtherNamespace/MyOtherClass.xml
index 46dd62df..2c1ad6b4 100644
--- a/mdoc/Test/en.expected-cppwinrt/MyFramework.MyOtherNamespace/MyOtherClass.xml
+++ b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyOtherNamespace/MyOtherClass.xml
@@ -33,7 +33,7 @@
<Member MemberName="Hello">
<MemberSignature Language="C#" Value="public float Hello (double value);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(float64 value) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="float Hello(double value);" />
+ <MemberSignature Language="C++ WINRT" Value="float Hello(double const&amp; value);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
@@ -55,7 +55,7 @@
<Member MemberName="Hello">
<MemberSignature Language="C#" Value="public float Hello (int value);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="float Hello(int value);" />
+ <MemberSignature Language="C++ WINRT" Value="float Hello(int const&amp; value);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/CompoundConstraints`1.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/CompoundConstraints`1.xml
new file mode 100644
index 00000000..d7a62c9c
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/CompoundConstraints`1.xml
@@ -0,0 +1,67 @@
+<Type Name="CompoundConstraints&lt;NGparam&gt;" FullName="Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;">
+ <TypeSignature Language="C#" Value="public class CompoundConstraints&lt;NGparam&gt; where NGparam : class, new()" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CompoundConstraints`1&lt;class .ctor NGparam&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="NGparam">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="NGparam">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CompoundConstraints ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" CompoundConstraints();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CompoundConstraintClass&lt;param&gt;">
+ <MemberSignature Language="C#" Value="public static void CompoundConstraintClass&lt;param&gt; () where param : class, new();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CompoundConstraintClass&lt;class .ctor param&gt;() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename param&gt;&#xA; where param : class, gcnew() static void CompoundConstraintClass();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="param">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Extensions.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Extensions.xml
index e8452484..da00e18f 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Extensions.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Extensions.xml
@@ -1,7 +1,7 @@
<Type Name="Extensions" FullName="Mono.DocTest.Generic.Extensions">
<TypeSignature Language="C#" Value="public static class Extensions" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Extensions extends System.Object" />
- <TypeSignature Language="C++ WINRT" Value="class Extensions abstract final" />
+ <TypeSignature Language="C++ WINRT" Value="class Extensions final" />
<AssemblyInfo>
<AssemblyName>DocTest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1.xml
index 0f52ab69..47dd2f26 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1.xml
@@ -36,7 +36,7 @@
<Member MemberName="BaseMethod&lt;S&gt;">
<MemberSignature Language="C#" Value="public U BaseMethod&lt;S&gt; (S genericParameter);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance !U BaseMethod&lt;S&gt;(!!S genericParameter) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename S&gt;&#xA; U BaseMethod(S genericParameter);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename S&gt;&#xA; U BaseMethod(S const&amp; genericParameter);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -85,7 +85,7 @@
<Member MemberName="ItemChanged">
<MemberSignature Language="C#" Value="public event Action&lt;Mono.DocTest.Generic.MyList&lt;U&gt;,Mono.DocTest.Generic.MyList&lt;U&gt;.Helper&lt;U,U&gt;&gt; ItemChanged;" />
<MemberSignature Language="ILAsm" Value=".event class System.Action`2&lt;class Mono.DocTest.Generic.MyList`1&lt;!U&gt;, class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!U, !U, !U&gt;&gt; ItemChanged" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token ItemChanged(Action&lt;Mono::DocTest::Generic::MyList&lt;U&gt;, Mono::DocTest::Generic::MyList&lt;U&gt;::Helper&lt;U, U&gt; const &amp;&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void ItemChanged(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;ItemChanged_revoker ItemChanged(auto_revoke_t, Action&lt;Mono::DocTest::Generic::MyList&lt;U&gt;, Mono::DocTest::Generic::MyList&lt;U&gt;::Helper&lt;U, U&gt; const &amp;&gt; const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token ItemChanged(Action&lt;Mono::DocTest::Generic::MyList&lt;U&gt;, Mono::DocTest::Generic::MyList&lt;U&gt;::Helper&lt;U, U&gt; const&amp;&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void ItemChanged(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;GenericBase`1::ItemChanged_revoker ItemChanged(auto_revoke_t, Action&lt;Mono::DocTest::Generic::MyList&lt;U&gt;, Mono::DocTest::Generic::MyList&lt;U&gt;::Helper&lt;U, U&gt; const&amp;&gt; const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -101,7 +101,7 @@
<Member MemberName="MyEvent">
<MemberSignature Language="C#" Value="public event EventHandler&lt;Mono.DocTest.Generic.GenericBase&lt;U&gt;.FooEventArgs&gt; MyEvent;" />
<MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Mono.DocTest.Generic.GenericBase`1/FooEventArgs&lt;!U&gt;&gt; MyEvent" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token MyEvent(EventHandler&lt;Mono::DocTest::Generic::GenericBase&lt;U&gt;::FooEventArgs&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void MyEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;MyEvent_revoker MyEvent(auto_revoke_t, EventHandler&lt;Mono::DocTest::Generic::GenericBase&lt;U&gt;::FooEventArgs&gt; const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token MyEvent(EventHandler&lt;Mono::DocTest::Generic::GenericBase&lt;U&gt;::FooEventArgs&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void MyEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;GenericBase`1::MyEvent_revoker MyEvent(auto_revoke_t, EventHandler&lt;Mono::DocTest::Generic::GenericBase&lt;U&gt;::FooEventArgs&gt; const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -117,7 +117,7 @@
<Member MemberName="op_Explicit">
<MemberSignature Language="C#" Value="public static explicit operator U (Mono.DocTest.Generic.GenericBase&lt;U&gt; list);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname !U op_Explicit(class Mono.DocTest.Generic.GenericBase`1&lt;!U&gt; list) cil managed" />
- <MemberSignature Language="C++ WINRT" Value=" static explicit operator U(Mono::DocTest::Generic::GenericBase&lt;U&gt; const &amp; list);" />
+ <MemberSignature Language="C++ WINRT" Value=" static explicit operator U(Mono::DocTest::Generic::GenericBase&lt;U&gt; const&amp; list);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/IFoo`1.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/IFoo`1.xml
index a054fb27..aee418ba 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/IFoo`1.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/IFoo`1.xml
@@ -19,7 +19,7 @@
<Member MemberName="Method&lt;U&gt;">
<MemberSignature Language="C#" Value="public T Method&lt;U&gt; (T t, U u);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance !T Method&lt;U&gt;(!T t, !!U u) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; T Method(T t, U u);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; T Method(T const&amp; t, U const&amp; u);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1+Helper`2.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1+Helper`2.xml
index bc6635e3..eda0a7c2 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1+Helper`2.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1+Helper`2.xml
@@ -39,7 +39,7 @@
<Member MemberName="UseT">
<MemberSignature Language="C#" Value="public void UseT (T a, U b, V c);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseT(!T a, !U b, !V c) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void UseT(T a, U b, V c);" />
+ <MemberSignature Language="C++ WINRT" Value="void UseT(T const&amp; a, U const&amp; b, V const&amp; c);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1.xml
index f16eff4d..ce9e94a3 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1.xml
@@ -96,7 +96,7 @@
<Member MemberName="Method&lt;U&gt;">
<MemberSignature Language="C#" Value="public void Method&lt;U&gt; (T t, U u);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Method&lt;U&gt;(!T t, !!U u) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; void Method(T t, U u);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; void Method(T const&amp; t, U const&amp; u);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -168,7 +168,7 @@
<Member MemberName="Test">
<MemberSignature Language="C#" Value="public void Test (T t);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Test(!T t) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void Test(T t);" />
+ <MemberSignature Language="C++ WINRT" Value="void Test(T const&amp; t);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -188,7 +188,7 @@
<Member MemberName="UseHelper&lt;U,V&gt;">
<MemberSignature Language="C#" Value="public void UseHelper&lt;U,V&gt; (Mono.DocTest.Generic.MyList&lt;T&gt;.Helper&lt;U,V&gt; helper);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper&lt;U, V&gt;(class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!T, !!U, !!V&gt; helper) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; const &amp; helper);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; const&amp; helper);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`2.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`2.xml
index 3883ed4b..1f1dbc61 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`2.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`2.xml
@@ -76,7 +76,7 @@
<Member MemberName="CopyTo">
<MemberSignature Language="C#" Value="public void CopyTo (A[] array, int arrayIndex);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void CopyTo(!A[] array, int32 arrayIndex) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void CopyTo(std::Array &lt;A&gt; const &amp; array, int arrayIndex);" />
+ <MemberSignature Language="C++ WINRT" Value="void CopyTo(winrt::array_view &lt;A&gt; const&amp; array, int const&amp; arrayIndex);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.Generic.ICollection`1.CopyTo(`0[],System.Int32)</InterfaceMember>
@@ -195,7 +195,7 @@
<Member MemberName="Mono.DocTest.Generic.IFoo&lt;A&gt;.Method&lt;U&gt;">
<MemberSignature Language="C#" Value="A IFoo&lt;A&gt;.Method&lt;U&gt; (A a, U u);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance !A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method&lt;U&gt;(!A a, !!U u) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method(A a, U u);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method(A const&amp; a, U const&amp; u);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:Mono.DocTest.Generic.IFoo`1.Method``1(`0,``0)</InterfaceMember>
@@ -266,7 +266,7 @@
<Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Add">
<MemberSignature Language="C#" Value="void ICollection&lt;A&gt;.Add (A item);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection&lt;A&gt;.Add(!A item) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void System.Collections.Generic.ICollection&lt;A&gt;.Add(A item);" />
+ <MemberSignature Language="C++ WINRT" Value="void System.Collections.Generic.ICollection&lt;A&gt;.Add(A const&amp; item);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.Generic.ICollection`1.Add(`0)</InterfaceMember>
@@ -309,7 +309,7 @@
<Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Contains">
<MemberSignature Language="C#" Value="bool ICollection&lt;A&gt;.Contains (A item);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(!A item) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(A item);" />
+ <MemberSignature Language="C++ WINRT" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(A const&amp; item);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.Generic.ICollection`1.Contains(`0)</InterfaceMember>
@@ -353,7 +353,7 @@
<Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Remove">
<MemberSignature Language="C#" Value="bool ICollection&lt;A&gt;.Remove (A item);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(!A item) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(A item);" />
+ <MemberSignature Language="C++ WINRT" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(A const&amp; item);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.Generic.ICollection`1.Remove(`0)</InterfaceMember>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocAttribute.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocAttribute.xml
index b5db4de6..328c1fd8 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocAttribute.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocAttribute.xml
@@ -23,7 +23,7 @@
<Member MemberName=".ctor">
<MemberSignature Language="C#" Value="public DocAttribute (string docs);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string docs) cil managed" />
- <MemberSignature Language="C++ WINRT" Value=" DocAttribute(winrt::hstring const &amp; docs);" />
+ <MemberSignature Language="C++ WINRT" Value=" DocAttribute(winrt::hstring const&amp; docs);" />
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocValueType.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocValueType.xml
index 61df663c..fae74b1e 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocValueType.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocValueType.xml
@@ -22,7 +22,7 @@
<Member MemberName="M">
<MemberSignature Language="C#" Value="public void M (int i);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void M(int i);" />
+ <MemberSignature Language="C++ WINRT" Value="void M(int const&amp; i);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/UseLists.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/UseLists.xml
index b19b1ea8..9c0df75d 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/UseLists.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/UseLists.xml
@@ -142,7 +142,7 @@
<Member MemberName="UseHelper&lt;T,U,V&gt;">
<MemberSignature Language="C#" Value="public void UseHelper&lt;T,U,V&gt; (Mono.DocTest.Generic.MyList&lt;T&gt;.Helper&lt;U,V&gt; helper);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper&lt;T, U, V&gt;(class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!!T, !!U, !!V&gt; helper) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename T, typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; const &amp; helper);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename T, typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; const&amp; helper);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass.xml
index 80136bf9..5290bea1 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass.xml
@@ -31,7 +31,7 @@
<Member MemberName="M">
<MemberSignature Language="C#" Value="public void M (int i);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void M(int i);" />
+ <MemberSignature Language="C++ WINRT" Value="void M(int const&amp; i);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass`1.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass`1.xml
index 51c7907a..73fe2061 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass`1.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass`1.xml
@@ -35,7 +35,7 @@
<Member MemberName="M">
<MemberSignature Language="C#" Value="public void M (int i);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void M(int i);" />
+ <MemberSignature Language="C++ WINRT" Value="void M(int const&amp; i);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget.xml
index 97ff0eb8..0bb9e49d 100644
--- a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget.xml
@@ -52,7 +52,7 @@
<Member MemberName=".ctor">
<MemberSignature Language="C#" Value="public Widget (string s);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string s) cil managed" />
- <MemberSignature Language="C++ WINRT" Value=" Widget(winrt::hstring const &amp; s);" />
+ <MemberSignature Language="C++ WINRT" Value=" Widget(winrt::hstring const&amp; s);" />
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -69,7 +69,7 @@
<Member MemberName="AnEvent">
<MemberSignature Language="C#" Value="public event Mono.DocTest.Widget.Del AnEvent;" />
<MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnEvent" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token AnEvent(Mono::DocTest::Widget::Del const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void AnEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;AnEvent_revoker AnEvent(auto_revoke_t, Mono::DocTest::Widget::Del const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token AnEvent(Mono::DocTest::Widget::Del const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void AnEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;Widget::AnEvent_revoker AnEvent(auto_revoke_t, Mono::DocTest::Widget::Del const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -99,7 +99,7 @@
<Member MemberName="AnotherEvent">
<MemberSignature Language="C#" Value="protected event Mono.DocTest.Widget.Del AnotherEvent;" />
<MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnotherEvent" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token AnotherEvent(Mono::DocTest::Widget::Del const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void AnotherEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;AnotherEvent_revoker AnotherEvent(auto_revoke_t, Mono::DocTest::Widget::Del const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token AnotherEvent(Mono::DocTest::Widget::Del const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void AnotherEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;Widget::AnotherEvent_revoker AnotherEvent(auto_revoke_t, Mono::DocTest::Widget::Del const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -115,7 +115,7 @@
<Member MemberName="array1">
<MemberSignature Language="C#" Value="public long[] array1;" />
<MemberSignature Language="ILAsm" Value=".field public int64[] array1" />
- <MemberSignature Language="C++ WINRT" Value="std::Array &lt;long&gt; array1;" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::array_view &lt;long&gt; array1;" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -131,7 +131,7 @@
<Member MemberName="array2">
<MemberSignature Language="C#" Value="public Mono.DocTest.Widget[,] array2;" />
<MemberSignature Language="ILAsm" Value=".field public class Mono.DocTest.Widget[,] array2" />
- <MemberSignature Language="C++ WINRT" Value="std::Array &lt;Mono::DocTest::Widget const &amp;, 2&gt; array2;" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::array_view &lt;Mono::DocTest::Widget const&amp;, 2&gt; array2;" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -147,7 +147,7 @@
<Member MemberName="classCtorError">
<MemberSignature Language="C#" Value="public static readonly string[] classCtorError;" />
<MemberSignature Language="ILAsm" Value=".field public static initonly string[] classCtorError" />
- <MemberSignature Language="C++ WINRT" Value="static initonly std::Array &lt;winrt::hstring const &amp;&gt; classCtorError;" />
+ <MemberSignature Language="C++ WINRT" Value="static initonly winrt::array_view &lt;winrt::hstring const&amp;&gt; classCtorError;" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -163,7 +163,7 @@
<Member MemberName="Default">
<MemberSignature Language="C#" Value="public void Default (int a = 1, int b = 2);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Default(int32 a, int32 b) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void Default(int a = 1, int b = 2);" />
+ <MemberSignature Language="C++ WINRT" Value="void Default(int const&amp; a = 1, int const&amp; b = 2);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -185,7 +185,7 @@
<Member MemberName="Default">
<MemberSignature Language="C#" Value="public void Default (string a = &quot;a&quot;, char b = '\0');" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Default(string a, char b) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void Default(winrt::hstring const &amp; a = &quot;a&quot;, char b = '\0');" />
+ <MemberSignature Language="C++ WINRT" Value="void Default(winrt::hstring const&amp; a = &quot;a&quot;, char const&amp; b = '\0');" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -223,7 +223,7 @@
<Member MemberName="Dynamic0">
<MemberSignature Language="C#" Value="public dynamic Dynamic0 (dynamic a, dynamic b);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance object Dynamic0(object a, object b) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IInspectable Dynamic0(winrt::Windows::Foundation::IInspectable const &amp; a, winrt::Windows::Foundation::IInspectable const &amp; b);" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IInspectable Dynamic0(winrt::Windows::Foundation::IInspectable const&amp; a, winrt::Windows::Foundation::IInspectable const&amp; b);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -306,7 +306,7 @@
<Member MemberName="DynamicE1">
<MemberSignature Language="C#" Value="public event Func&lt;dynamic&gt; DynamicE1;" />
<MemberSignature Language="ILAsm" Value=".event class System.Func`1&lt;object&gt; DynamicE1" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token DynamicE1(Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void DynamicE1(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;DynamicE1_revoker DynamicE1(auto_revoke_t, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token DynamicE1(Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void DynamicE1(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;Widget::DynamicE1_revoker DynamicE1(auto_revoke_t, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -328,7 +328,7 @@
<Member MemberName="DynamicE2">
<MemberSignature Language="C#" Value="public event Func&lt;dynamic&gt; DynamicE2;" />
<MemberSignature Language="ILAsm" Value=".event class System.Func`1&lt;object&gt; DynamicE2" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token DynamicE2(Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void DynamicE2(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;DynamicE2_revoker DynamicE2(auto_revoke_t, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token DynamicE2(Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void DynamicE2(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;Widget::DynamicE2_revoker DynamicE2(auto_revoke_t, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -359,7 +359,7 @@
<Member MemberName="DynamicP">
<MemberSignature Language="C#" Value="public Func&lt;Func&lt;string,dynamic,string&gt;,Func&lt;dynamic,Func&lt;dynamic&gt;,string&gt;&gt; DynamicP { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance class System.Func`2&lt;class System.Func`3&lt;string, object, string&gt;, class System.Func`3&lt;object, class System.Func`1&lt;object&gt;, string&gt;&gt; DynamicP" />
- <MemberSignature Language="C++ WINRT" Value="Func&lt;Func&lt;winrt::hstring, winrt::Windows::Foundation::IInspectable const &amp;, winrt::hstring const &amp;&gt;, Func&lt;winrt::Windows::Foundation::IInspectable, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const &amp;, winrt::hstring const &amp;&gt; const &amp;&gt; DynamicP();" />
+ <MemberSignature Language="C++ WINRT" Value="Func&lt;Func&lt;winrt::hstring, winrt::Windows::Foundation::IInspectable const&amp;, winrt::hstring const&amp;&gt;, Func&lt;winrt::Windows::Foundation::IInspectable, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp;, winrt::hstring const&amp;&gt; const&amp;&gt; DynamicP();" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -470,7 +470,7 @@
<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, [out] float32&amp; f, valuetype Mono.DocTest.DocValueType&amp; v) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void M1(char c, [Runtime::InteropServices::Out] float &amp; f, Mono::DocTest::DocValueType &amp; v);" />
+ <MemberSignature Language="C++ WINRT" Value="void M1(char const&amp; c, [Runtime::InteropServices::Out] float &amp; f, Mono::DocTest::DocValueType &amp; v);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -527,7 +527,7 @@
<Member MemberName="M2">
<MemberSignature Language="C#" Value="public void M2 (short[] x1, int[,] x2, long[][] x3);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M2(int16[] x1, int32[,] x2, int64[][] x3) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void M2(std::Array &lt;short&gt; const &amp; x1, std::Array &lt;int, 2&gt; const &amp; x2, std::Array &lt;std::Array &lt;long&gt; const &amp;&gt; const &amp; x3);" />
+ <MemberSignature Language="C++ WINRT" Value="void M2(winrt::array_view &lt;short&gt; const&amp; x1, winrt::array_view &lt;int, 2&gt; const&amp; x2, winrt::array_view &lt;winrt::array_view &lt;long&gt; const&amp;&gt; const&amp; x3);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -551,7 +551,7 @@
<Member MemberName="M3">
<MemberSignature Language="C#" Value="protected void M3 (long[][] x3, Mono.DocTest.Widget[,,][] x4);" />
<MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M3(int64[][] x3, class Mono.DocTest.Widget[,,][] x4) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void M3(std::Array &lt;std::Array &lt;long&gt; const &amp;&gt; const &amp; x3, std::Array &lt;std::Array &lt;Mono::DocTest::Widget const &amp;, 3&gt; const &amp;&gt; const &amp; x4);" />
+ <MemberSignature Language="C++ WINRT" Value="void M3(winrt::array_view &lt;winrt::array_view &lt;long&gt; const&amp;&gt; const&amp; x3, winrt::array_view &lt;winrt::array_view &lt;Mono::DocTest::Widget const&amp;, 3&gt; const&amp;&gt; const&amp; x4);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -595,7 +595,7 @@
<Member MemberName="M5">
<MemberSignature Language="C#" Value="protected void M5 (void* pv, double*[,][] pd);" />
<MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M5(void* pv, float64*[,][] pd) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void M5(void* pv, std::Array &lt;std::Array &lt;double*, 2&gt; const &amp;&gt; const &amp; pd);" />
+ <MemberSignature Language="C++ WINRT" Value="void M5(void* pv, winrt::array_view &lt;winrt::array_view &lt;double*, 2&gt; const&amp;&gt; const&amp; pd);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -645,7 +645,7 @@
<Member MemberName="M7">
<MemberSignature Language="C#" Value="public void M7 (Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple a);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M7(class Mono.DocTest.Widget/NestedClass/Double/Triple/Quadruple a) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="void M7(Mono::DocTest::Widget::NestedClass::Double::Triple::Quadruple const &amp; a);" />
+ <MemberSignature Language="C++ WINRT" Value="void M7(Mono::DocTest::Widget::NestedClass::Double::Triple::Quadruple const&amp; a);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -697,7 +697,7 @@
<Member MemberName="op_Addition">
<MemberSignature Language="C#" Value="public static Mono.DocTest.Widget operator + (Mono.DocTest.Widget x1, Mono.DocTest.Widget x2);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_Addition(class Mono.DocTest.Widget x1, class Mono.DocTest.Widget x2) cil managed" />
- <MemberSignature Language="C++ WINRT" Value=" static Mono::DocTest::Widget operator +(Mono::DocTest::Widget const &amp; x1, Mono::DocTest::Widget const &amp; x2);" />
+ <MemberSignature Language="C++ WINRT" Value=" static Mono::DocTest::Widget operator +(Mono::DocTest::Widget const&amp; x1, Mono::DocTest::Widget const&amp; x2);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -736,7 +736,7 @@
<Member MemberName="op_Explicit">
<MemberSignature Language="C#" Value="public static explicit operator int (Mono.DocTest.Widget x);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int32 op_Explicit(class Mono.DocTest.Widget x) cil managed" />
- <MemberSignature Language="C++ WINRT" Value=" static explicit operator int(Mono::DocTest::Widget const &amp; x);" />
+ <MemberSignature Language="C++ WINRT" Value=" static explicit operator int(Mono::DocTest::Widget const&amp; x);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -757,7 +757,7 @@
<Member MemberName="op_Implicit">
<MemberSignature Language="C#" Value="public static implicit operator long (Mono.DocTest.Widget x);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int64 op_Implicit(class Mono.DocTest.Widget x) cil managed" />
- <MemberSignature Language="C++ WINRT" Value=" static operator long(Mono::DocTest::Widget const &amp; x);" />
+ <MemberSignature Language="C++ WINRT" Value=" static operator long(Mono::DocTest::Widget const&amp; x);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -778,7 +778,7 @@
<Member MemberName="op_UnaryPlus">
<MemberSignature Language="C#" Value="public static Mono.DocTest.Widget operator + (Mono.DocTest.Widget x);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_UnaryPlus(class Mono.DocTest.Widget x) cil managed" />
- <MemberSignature Language="C++ WINRT" Value=" static Mono::DocTest::Widget operator +(Mono::DocTest::Widget const &amp; x);" />
+ <MemberSignature Language="C++ WINRT" Value=" static Mono::DocTest::Widget operator +(Mono::DocTest::Widget const&amp; x);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/System/Array.xml b/mdoc/Test/en.expected-cppwinrt2/System/Array.xml
index 865b3cf4..a93cfc01 100644
--- a/mdoc/Test/en.expected-cppwinrt2/System/Array.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/System/Array.xml
@@ -83,7 +83,7 @@
<Member MemberName="Resize&lt;T&gt;">
<MemberSignature Language="C#" Value="public static void Resize&lt;T&gt; (ref T[] array, int newSize);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize&lt;T&gt;(!!T[]&amp; array, int32 newSize) cil managed" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename T&gt;&#xA; static void Resize(std::Array &lt;T&gt; const &amp; &amp; array, int newSize);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename T&gt;&#xA; static void Resize(winrt::array_view &lt;T&gt; const&amp; &amp; array, int const&amp; newSize);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-cppwinrt2/index.xml b/mdoc/Test/en.expected-cppwinrt2/index.xml
index 0d692620..d94146c6 100644
--- a/mdoc/Test/en.expected-cppwinrt2/index.xml
+++ b/mdoc/Test/en.expected-cppwinrt2/index.xml
@@ -35,6 +35,7 @@
<Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="CompoundConstraints`1" DisplayName="CompoundConstraints&lt;NGparam&gt;" Kind="Class" />
<Type Name="Extensions" Kind="Class" />
<Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
<Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
diff --git a/mdoc/Test/en.expected-eii-implementation-ecmadoc/CustomNamespace/ClassEnumerator.xml b/mdoc/Test/en.expected-eii-implementation-ecmadoc/CustomNamespace/ClassEnumerator.xml
index 3e0fdbfc..2cee2246 100644
--- a/mdoc/Test/en.expected-eii-implementation-ecmadoc/CustomNamespace/ClassEnumerator.xml
+++ b/mdoc/Test/en.expected-eii-implementation-ecmadoc/CustomNamespace/ClassEnumerator.xml
@@ -92,7 +92,7 @@
<MemberSignature Language="JavaScript" Value="function main(cmdArgs)" Usage="CustomNamespace.ClassEnumerator.main(cmdArgs)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static void Main(cli::array &lt;System::String ^&gt; ^ cmdArgs);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; static void Main(Platform::Array &lt;Platform::String ^&gt; ^ cmdArgs);" />
- <MemberSignature Language="C++ WINRT" Value=" static void Main(std::Array &lt;winrt::hstring const &amp;&gt; const &amp; cmdArgs);" />
+ <MemberSignature Language="C++ WINRT" Value=" static void Main(winrt::array_view &lt;winrt::hstring const&amp;&gt; const&amp; cmdArgs);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.65535.65535</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-eii-implementation-slashdoc/CustomNamespace/ClassEnumerator.xml b/mdoc/Test/en.expected-eii-implementation-slashdoc/CustomNamespace/ClassEnumerator.xml
index 405861e1..0bfc3fe1 100644
--- a/mdoc/Test/en.expected-eii-implementation-slashdoc/CustomNamespace/ClassEnumerator.xml
+++ b/mdoc/Test/en.expected-eii-implementation-slashdoc/CustomNamespace/ClassEnumerator.xml
@@ -96,7 +96,7 @@
<MemberSignature Language="JavaScript" Value="function main(cmdArgs)" Usage="CustomNamespace.ClassEnumerator.main(cmdArgs)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static void Main(cli::array &lt;System::String ^&gt; ^ cmdArgs);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; static void Main(Platform::Array &lt;Platform::String ^&gt; ^ cmdArgs);" />
- <MemberSignature Language="C++ WINRT" Value=" static void Main(std::Array &lt;winrt::hstring const &amp;&gt; const &amp; cmdArgs);" />
+ <MemberSignature Language="C++ WINRT" Value=" static void Main(winrt::array_view &lt;winrt::hstring const&amp;&gt; const&amp; cmdArgs);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.65535.65535</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-eii-implementation/CustomNamespace/ClassEnumerator.xml b/mdoc/Test/en.expected-eii-implementation/CustomNamespace/ClassEnumerator.xml
index ea03f5c3..58bb9d5d 100644
--- a/mdoc/Test/en.expected-eii-implementation/CustomNamespace/ClassEnumerator.xml
+++ b/mdoc/Test/en.expected-eii-implementation/CustomNamespace/ClassEnumerator.xml
@@ -92,7 +92,7 @@
<MemberSignature Language="JavaScript" Value="function main(cmdArgs)" Usage="CustomNamespace.ClassEnumerator.main(cmdArgs)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static void Main(cli::array &lt;System::String ^&gt; ^ cmdArgs);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; static void Main(Platform::Array &lt;Platform::String ^&gt; ^ cmdArgs);" />
- <MemberSignature Language="C++ WINRT" Value=" static void Main(std::Array &lt;winrt::hstring const &amp;&gt; const &amp; cmdArgs);" />
+ <MemberSignature Language="C++ WINRT" Value=" static void Main(winrt::array_view &lt;winrt::hstring const&amp;&gt; const&amp; cmdArgs);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.65535.65535</AssemblyVersion>
diff --git a/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Circle.xml b/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Circle.xml
index 0df6e8c0..1cf1d136 100644
--- a/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Circle.xml
+++ b/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Circle.xml
@@ -16,8 +16,8 @@
<AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerDisplay("{__DebugDisplay(),nq}")&gt;]</AttributeName>
</Attribute>
<Attribute>
- <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions/Shape/Circle@DebugTypeProxy))]</AttributeName>
- <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions/Shape/Circle@DebugTypeProxy))&gt;]</AttributeName>
+ <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions+Shape+Circle@DebugTypeProxy))]</AttributeName>
+ <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions+Shape+Circle@DebugTypeProxy))&gt;]</AttributeName>
</Attribute>
<Attribute>
<AttributeName Language="C#">[System.Serializable]</AttributeName>
diff --git a/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Prism.xml b/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Prism.xml
index 6b82ea56..d692ac3a 100644
--- a/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Prism.xml
+++ b/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Prism.xml
@@ -16,8 +16,8 @@
<AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerDisplay("{__DebugDisplay(),nq}")&gt;]</AttributeName>
</Attribute>
<Attribute>
- <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions/Shape/Prism@DebugTypeProxy))]</AttributeName>
- <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions/Shape/Prism@DebugTypeProxy))&gt;]</AttributeName>
+ <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions+Shape+Prism@DebugTypeProxy))]</AttributeName>
+ <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions+Shape+Prism@DebugTypeProxy))&gt;]</AttributeName>
</Attribute>
<Attribute>
<AttributeName Language="C#">[System.Serializable]</AttributeName>
diff --git a/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Rectangle.xml b/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Rectangle.xml
index af196c39..fe657c9b 100644
--- a/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Rectangle.xml
+++ b/mdoc/Test/en.expected-fsharp/DiscriminatedUnions+Shape+Rectangle.xml
@@ -16,8 +16,8 @@
<AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerDisplay("{__DebugDisplay(),nq}")&gt;]</AttributeName>
</Attribute>
<Attribute>
- <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions/Shape/Rectangle@DebugTypeProxy))]</AttributeName>
- <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions/Shape/Rectangle@DebugTypeProxy))&gt;]</AttributeName>
+ <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions+Shape+Rectangle@DebugTypeProxy))]</AttributeName>
+ <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(DiscriminatedUnions+Shape+Rectangle@DebugTypeProxy))&gt;]</AttributeName>
</Attribute>
<Attribute>
<AttributeName Language="C#">[System.Serializable]</AttributeName>
diff --git a/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+FirstLast.xml b/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+FirstLast.xml
index b7b7a2de..e31b131c 100644
--- a/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+FirstLast.xml
+++ b/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+FirstLast.xml
@@ -16,8 +16,8 @@
<AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerDisplay("{__DebugDisplay(),nq}")&gt;]</AttributeName>
</Attribute>
<Attribute>
- <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples/PersonName/FirstLast@DebugTypeProxy))]</AttributeName>
- <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples/PersonName/FirstLast@DebugTypeProxy))&gt;]</AttributeName>
+ <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples+PersonName+FirstLast@DebugTypeProxy))]</AttributeName>
+ <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples+PersonName+FirstLast@DebugTypeProxy))&gt;]</AttributeName>
</Attribute>
<Attribute>
<AttributeName Language="C#">[System.Serializable]</AttributeName>
diff --git a/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+FirstOnly.xml b/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+FirstOnly.xml
index c50cd03a..8bc63289 100644
--- a/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+FirstOnly.xml
+++ b/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+FirstOnly.xml
@@ -16,8 +16,8 @@
<AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerDisplay("{__DebugDisplay(),nq}")&gt;]</AttributeName>
</Attribute>
<Attribute>
- <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples/PersonName/FirstOnly@DebugTypeProxy))]</AttributeName>
- <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples/PersonName/FirstOnly@DebugTypeProxy))&gt;]</AttributeName>
+ <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples+PersonName+FirstOnly@DebugTypeProxy))]</AttributeName>
+ <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples+PersonName+FirstOnly@DebugTypeProxy))&gt;]</AttributeName>
</Attribute>
<Attribute>
<AttributeName Language="C#">[System.Serializable]</AttributeName>
diff --git a/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+LastOnly.xml b/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+LastOnly.xml
index 9039e514..b9346976 100644
--- a/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+LastOnly.xml
+++ b/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+PersonName+LastOnly.xml
@@ -16,8 +16,8 @@
<AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerDisplay("{__DebugDisplay(),nq}")&gt;]</AttributeName>
</Attribute>
<Attribute>
- <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples/PersonName/LastOnly@DebugTypeProxy))]</AttributeName>
- <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples/PersonName/LastOnly@DebugTypeProxy))&gt;]</AttributeName>
+ <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples+PersonName+LastOnly@DebugTypeProxy))]</AttributeName>
+ <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples+PersonName+LastOnly@DebugTypeProxy))&gt;]</AttributeName>
</Attribute>
<Attribute>
<AttributeName Language="C#">[System.Serializable]</AttributeName>
diff --git a/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+Shape+Circle.xml b/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+Shape+Circle.xml
index 538409b3..cfc60932 100644
--- a/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+Shape+Circle.xml
+++ b/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+Shape+Circle.xml
@@ -16,8 +16,8 @@
<AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerDisplay("{__DebugDisplay(),nq}")&gt;]</AttributeName>
</Attribute>
<Attribute>
- <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples/Shape/Circle@DebugTypeProxy))]</AttributeName>
- <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples/Shape/Circle@DebugTypeProxy))&gt;]</AttributeName>
+ <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples+Shape+Circle@DebugTypeProxy))]</AttributeName>
+ <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples+Shape+Circle@DebugTypeProxy))&gt;]</AttributeName>
</Attribute>
<Attribute>
<AttributeName Language="C#">[System.Serializable]</AttributeName>
diff --git a/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+Shape+Rectangle.xml b/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+Shape+Rectangle.xml
index f22cf1ab..418a8add 100644
--- a/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+Shape+Rectangle.xml
+++ b/mdoc/Test/en.expected-fsharp/PatternMatching/PatternMatchingExamples+Shape+Rectangle.xml
@@ -16,8 +16,8 @@
<AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerDisplay("{__DebugDisplay(),nq}")&gt;]</AttributeName>
</Attribute>
<Attribute>
- <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples/Shape/Rectangle@DebugTypeProxy))]</AttributeName>
- <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples/Shape/Rectangle@DebugTypeProxy))&gt;]</AttributeName>
+ <AttributeName Language="C#">[System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples+Shape+Rectangle@DebugTypeProxy))]</AttributeName>
+ <AttributeName Language="F#">[&lt;System.Diagnostics.DebuggerTypeProxy(typeof(PatternMatching.PatternMatchingExamples+Shape+Rectangle@DebugTypeProxy))&gt;]</AttributeName>
</Attribute>
<Attribute>
<AttributeName Language="C#">[System.Serializable]</AttributeName>
diff --git a/mdoc/Test/en.expected-fx-import/FrameworksIndex/one.xml b/mdoc/Test/en.expected-fx-import/FrameworksIndex/one.xml
index 0c0f7b01..4eb18767 100644
--- a/mdoc/Test/en.expected-fx-import/FrameworksIndex/one.xml
+++ b/mdoc/Test/en.expected-fx-import/FrameworksIndex/one.xml
@@ -109,6 +109,10 @@
</Type>
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="Mono.DocTest.Generic.CompoundConstraints`1" Id="T:Mono.DocTest.Generic.CompoundConstraints`1">
+ <Member Id="M:Mono.DocTest.Generic.CompoundConstraints`1.#ctor" />
+ <Member Id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1" />
+ </Type>
<Type Name="Mono.DocTest.Generic.Extensions" Id="T:Mono.DocTest.Generic.Extensions">
<Member Id="M:Mono.DocTest.Generic.Extensions.Bar``1(Mono.DocTest.Generic.IFoo{``0},System.String)" />
<Member Id="M:Mono.DocTest.Generic.Extensions.ForEach``1(System.Collections.Generic.IEnumerable{``0},System.Action{``0})" />
diff --git a/mdoc/Test/en.expected-fx-import/Mono.DocTest.Generic/CompoundConstraints`1.xml b/mdoc/Test/en.expected-fx-import/Mono.DocTest.Generic/CompoundConstraints`1.xml
new file mode 100644
index 00000000..bebdeebd
--- /dev/null
+++ b/mdoc/Test/en.expected-fx-import/Mono.DocTest.Generic/CompoundConstraints`1.xml
@@ -0,0 +1,68 @@
+<Type Name="CompoundConstraints&lt;NGparam&gt;" FullName="Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;">
+ <TypeSignature Language="C#" Value="public class CompoundConstraints&lt;NGparam&gt; where NGparam : class, new()" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CompoundConstraints`1&lt;class .ctor NGparam&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="NGparam">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="NGparam">Non-generic param</typeparam>
+ <summary>To be added.</summary>
+ <remarks>
+ <c>T:Mono.DocTest.CompoundConstraints</c>.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CompoundConstraints ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CompoundConstraintClass&lt;param&gt;">
+ <MemberSignature Language="C#" Value="public static void CompoundConstraintClass&lt;param&gt; () where param : class, new();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CompoundConstraintClass&lt;class .ctor param&gt;() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="param">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-fx-import/index.xml b/mdoc/Test/en.expected-fx-import/index.xml
index 5190f1db..2199327b 100644
--- a/mdoc/Test/en.expected-fx-import/index.xml
+++ b/mdoc/Test/en.expected-fx-import/index.xml
@@ -55,6 +55,7 @@
<Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="CompoundConstraints`1" DisplayName="CompoundConstraints&lt;NGparam&gt;" Kind="Class" />
<Type Name="Extensions" Kind="Class" />
<Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
<Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
diff --git a/mdoc/Test/en.expected-guid/index.xml b/mdoc/Test/en.expected-guid/index.xml
new file mode 100644
index 00000000..9e662045
--- /dev/null
+++ b/mdoc/Test/en.expected-guid/index.xml
@@ -0,0 +1,22 @@
+<Overview>
+ <Assemblies>
+ <Assembly Name="GuidClass" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ </Assemblies>
+ <Remarks>To be added.</Remarks>
+ <Copyright>To be added.</Copyright>
+ <Types>
+ <Namespace Name="mdoc.Test.SampleClasses">
+ <Type Name="GuidClass" Kind="Class" />
+ </Namespace>
+ </Types>
+ <Title>GuidClass</Title>
+</Overview>
diff --git a/mdoc/Test/en.expected-guid/mdoc.Test.SampleClasses/GuidClass.xml b/mdoc/Test/en.expected-guid/mdoc.Test.SampleClasses/GuidClass.xml
new file mode 100644
index 00000000..a6451db2
--- /dev/null
+++ b/mdoc/Test/en.expected-guid/mdoc.Test.SampleClasses/GuidClass.xml
@@ -0,0 +1,102 @@
+<Type Name="GuidClass" FullName="mdoc.Test.SampleClasses.GuidClass">
+ <TypeSignature Language="C#" Value="public class GuidClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit GuidClass extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class GuidClass" />
+ <AssemblyInfo>
+ <AssemblyName>GuidClass</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public GuidClass (Guid guid);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(valuetype System.Guid guid) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; GuidClass(Platform::Guid guid);" />
+ <MemberSignature Language="C++ WINRT" Value=" GuidClass(winrt::guid const&amp; guid);" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="guid" Type="System.Guid" />
+ </Parameters>
+ <Docs>
+ <param name="guid">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CreateNewGuid">
+ <MemberSignature Language="C#" Value="public static Guid CreateNewGuid ();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype System.Guid CreateNewGuid() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; static Platform::Guid CreateNewGuid();" />
+ <MemberSignature Language="C++ WINRT" Value=" static winrt::guid CreateNewGuid();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Guid</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="IsUnique">
+ <MemberSignature Language="C#" Value="public bool IsUnique (Guid guid);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance bool IsUnique(valuetype System.Guid guid) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; bool IsUnique(Platform::Guid guid);" />
+ <MemberSignature Language="C++ WINRT" Value="bool IsUnique(winrt::guid const&amp; guid);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="guid" Type="System.Guid" />
+ </Parameters>
+ <Docs>
+ <param name="guid">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ObjectIndentical">
+ <MemberSignature Language="C#" Value="public bool ObjectIndentical (Guid objGuid1, Guid objGuid2);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance bool ObjectIndentical(valuetype System.Guid objGuid1, valuetype System.Guid objGuid2) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; bool ObjectIndentical(Platform::Guid objGuid1, Platform::Guid objGuid2);" />
+ <MemberSignature Language="C++ WINRT" Value="bool ObjectIndentical(winrt::guid const&amp; objGuid1, winrt::guid const&amp; objGuid2);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="objGuid1" Type="System.Guid" />
+ <Parameter Name="objGuid2" Type="System.Guid" />
+ </Parameters>
+ <Docs>
+ <param name="objGuid1">To be added.</param>
+ <param name="objGuid2">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-guid/ns-mdoc.Test.SampleClasses.xml b/mdoc/Test/en.expected-guid/ns-mdoc.Test.SampleClasses.xml
new file mode 100644
index 00000000..80a5e984
--- /dev/null
+++ b/mdoc/Test/en.expected-guid/ns-mdoc.Test.SampleClasses.xml
@@ -0,0 +1,6 @@
+<Namespace Name="mdoc.Test.SampleClasses">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/CompoundConstraints`1.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/CompoundConstraints`1.xml
new file mode 100644
index 00000000..1655cde9
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/CompoundConstraints`1.xml
@@ -0,0 +1,65 @@
+<Type Name="CompoundConstraints&lt;NGparam&gt;" FullName="Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;">
+ <TypeSignature Language="C#" Value="public class CompoundConstraints&lt;NGparam&gt; where NGparam : class, new()" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CompoundConstraints`1&lt;class .ctor NGparam&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="NGparam">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="NGparam">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CompoundConstraints ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CompoundConstraintClass&lt;param&gt;">
+ <MemberSignature Language="C#" Value="public static void CompoundConstraintClass&lt;param&gt; () where param : class, new();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CompoundConstraintClass&lt;class .ctor param&gt;() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="param">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/index.xml b/mdoc/Test/en.expected-javascript/index.xml
index c74a4a77..79f03305 100644
--- a/mdoc/Test/en.expected-javascript/index.xml
+++ b/mdoc/Test/en.expected-javascript/index.xml
@@ -35,6 +35,7 @@
<Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="CompoundConstraints`1" DisplayName="CompoundConstraints&lt;NGparam&gt;" Kind="Class" />
<Type Name="Extensions" Kind="Class" />
<Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
<Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
diff --git a/mdoc/Test/en.expected-vbnet2/Mono.DocTest.Generic/CompoundConstraints`1.xml b/mdoc/Test/en.expected-vbnet2/Mono.DocTest.Generic/CompoundConstraints`1.xml
new file mode 100644
index 00000000..15297b83
--- /dev/null
+++ b/mdoc/Test/en.expected-vbnet2/Mono.DocTest.Generic/CompoundConstraints`1.xml
@@ -0,0 +1,68 @@
+<Type Name="CompoundConstraints&lt;NGparam&gt;" FullName="Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;">
+ <TypeSignature Language="C#" Value="public class CompoundConstraints&lt;NGparam&gt; where NGparam : class, new()" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CompoundConstraints`1&lt;class .ctor NGparam&gt; extends System.Object" />
+ <TypeSignature Language="VB.NET" Value="Public Class CompoundConstraints(Of NGparam)" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="NGparam">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="NGparam">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CompoundConstraints ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="VB.NET" Value="Public Sub New ()" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CompoundConstraintClass&lt;param&gt;">
+ <MemberSignature Language="C#" Value="public static void CompoundConstraintClass&lt;param&gt; () where param : class, new();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CompoundConstraintClass&lt;class .ctor param&gt;() cil managed" />
+ <MemberSignature Language="VB.NET" Value="Public Shared Sub CompoundConstraintClass(Of param As {Class, New}) ()" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="param">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-vbnet2/index.xml b/mdoc/Test/en.expected-vbnet2/index.xml
index 91ad0ed3..9bcfe8be 100644
--- a/mdoc/Test/en.expected-vbnet2/index.xml
+++ b/mdoc/Test/en.expected-vbnet2/index.xml
@@ -35,6 +35,7 @@
<Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="CompoundConstraints`1" DisplayName="CompoundConstraints&lt;NGparam&gt;" Kind="Class" />
<Type Name="Extensions" Kind="Class" />
<Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
<Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
diff --git a/mdoc/Test/en.expected.delete/Mono.DocTest.Generic/CompoundConstraints`1.xml b/mdoc/Test/en.expected.delete/Mono.DocTest.Generic/CompoundConstraints`1.xml
new file mode 100644
index 00000000..fa8b068a
--- /dev/null
+++ b/mdoc/Test/en.expected.delete/Mono.DocTest.Generic/CompoundConstraints`1.xml
@@ -0,0 +1,58 @@
+<Type Name="CompoundConstraints&lt;NGparam&gt;" FullName="Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;">
+ <TypeSignature Language="C#" Value="public class CompoundConstraints&lt;NGparam&gt; where NGparam : class, new()" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CompoundConstraints`1&lt;class .ctor NGparam&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="NGparam">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="NGparam">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CompoundConstraints ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberType>Constructor</MemberType>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CompoundConstraintClass&lt;param&gt;">
+ <MemberSignature Language="C#" Value="public static void CompoundConstraintClass&lt;param&gt; () where param : class, new();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CompoundConstraintClass&lt;class .ctor param&gt;() cil managed" />
+ <MemberType>Method</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="param">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected.delete/index.xml b/mdoc/Test/en.expected.delete/index.xml
index 0d692620..d94146c6 100644
--- a/mdoc/Test/en.expected.delete/index.xml
+++ b/mdoc/Test/en.expected.delete/index.xml
@@ -35,6 +35,7 @@
<Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="CompoundConstraints`1" DisplayName="CompoundConstraints&lt;NGparam&gt;" Kind="Class" />
<Type Name="Extensions" Kind="Class" />
<Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
<Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
diff --git a/mdoc/Test/en.expected.differentTypeDefinitions/FrameworksIndex/One.xml b/mdoc/Test/en.expected.differentTypeDefinitions/FrameworksIndex/One.xml
new file mode 100644
index 00000000..cf5c13f9
--- /dev/null
+++ b/mdoc/Test/en.expected.differentTypeDefinitions/FrameworksIndex/One.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Framework Name="One">
+ <Assemblies>
+ <Assembly Name="DocTest-differentTypeDefinitions-First" Version="0.0.0.0" />
+ <Assembly Name="DocTest-differentTypeDefinitions-Second" Version="0.0.0.0" />
+ </Assemblies>
+ <Namespace Name="TheNamespace">
+ <Type Name="TheNamespace.TheClass" Id="T:TheNamespace.TheClass">
+ <Member Id="M:TheNamespace.TheClass.#ctor(System.Int32)" />
+ <Member Id="M:TheNamespace.TheClass.#ctor(System.String)" />
+ </Type>
+ </Namespace>
+</Framework> \ No newline at end of file
diff --git a/mdoc/Test/en.expected.differentTypeDefinitions/TheNamespace/TheClass.xml b/mdoc/Test/en.expected.differentTypeDefinitions/TheNamespace/TheClass.xml
new file mode 100644
index 00000000..6351228d
--- /dev/null
+++ b/mdoc/Test/en.expected.differentTypeDefinitions/TheNamespace/TheClass.xml
@@ -0,0 +1,56 @@
+<Type Name="TheClass" FullName="TheNamespace.TheClass">
+ <TypeSignature Language="C#" Value="public class TheClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit TheClass extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-differentTypeDefinitions-First</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-differentTypeDefinitions-Second</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public TheClass (int arg);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(int32 arg) cil managed" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-differentTypeDefinitions-First</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="arg" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="arg">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public TheClass (string arg);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string arg) cil managed" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-differentTypeDefinitions-Second</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="arg" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <param name="arg">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.differentTypeDefinitions/index.xml b/mdoc/Test/en.expected.differentTypeDefinitions/index.xml
new file mode 100644
index 00000000..fffae27a
--- /dev/null
+++ b/mdoc/Test/en.expected.differentTypeDefinitions/index.xml
@@ -0,0 +1,32 @@
+<Overview>
+ <Assemblies>
+ <Assembly Name="DocTest-differentTypeDefinitions-First" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ <Assembly Name="DocTest-differentTypeDefinitions-Second" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ </Assemblies>
+ <Remarks>To be added.</Remarks>
+ <Copyright>To be added.</Copyright>
+ <Types>
+ <Namespace Name="TheNamespace">
+ <Type Name="TheClass" Kind="Class" />
+ </Namespace>
+ </Types>
+ <Title>Untitled</Title>
+</Overview>
diff --git a/mdoc/Test/en.expected.differentTypeDefinitions/ns-TheNamespace.xml b/mdoc/Test/en.expected.differentTypeDefinitions/ns-TheNamespace.xml
new file mode 100644
index 00000000..757c55bd
--- /dev/null
+++ b/mdoc/Test/en.expected.differentTypeDefinitions/ns-TheNamespace.xml
@@ -0,0 +1,6 @@
+<Namespace Name="TheNamespace">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/CompoundConstraints`1.xml b/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/CompoundConstraints`1.xml
new file mode 100644
index 00000000..f9ba1b6c
--- /dev/null
+++ b/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/CompoundConstraints`1.xml
@@ -0,0 +1,66 @@
+<Type Name="CompoundConstraints&lt;NGparam&gt;" FullName="Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;">
+ <TypeSignature Language="C#" Value="public class CompoundConstraints&lt;NGparam&gt; where NGparam : class, new()" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CompoundConstraints`1&lt;class .ctor NGparam&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="NGparam">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="NGparam">Non-generic param</typeparam>
+ <summary>To be added.</summary>
+ <remarks>
+ <c>T:Mono.DocTest.CompoundConstraints</c>.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CompoundConstraints ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CompoundConstraintClass&lt;param&gt;">
+ <MemberSignature Language="C#" Value="public static void CompoundConstraintClass&lt;param&gt; () where param : class, new();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CompoundConstraintClass&lt;class .ctor param&gt;() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="param">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected.importslashdoc/index.xml b/mdoc/Test/en.expected.importslashdoc/index.xml
index 82bf818b..da66cdec 100644
--- a/mdoc/Test/en.expected.importslashdoc/index.xml
+++ b/mdoc/Test/en.expected.importslashdoc/index.xml
@@ -35,6 +35,7 @@
<Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="CompoundConstraints`1" DisplayName="CompoundConstraints&lt;NGparam&gt;" Kind="Class" />
<Type Name="Extensions" Kind="Class" />
<Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
<Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
diff --git a/mdoc/Test/en.expected.since/Mono.DocTest.Generic/CompoundConstraints`1.xml b/mdoc/Test/en.expected.since/Mono.DocTest.Generic/CompoundConstraints`1.xml
new file mode 100644
index 00000000..5398157d
--- /dev/null
+++ b/mdoc/Test/en.expected.since/Mono.DocTest.Generic/CompoundConstraints`1.xml
@@ -0,0 +1,68 @@
+<Type Name="CompoundConstraints&lt;NGparam&gt;" FullName="Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;">
+ <TypeSignature Language="C#" Value="public class CompoundConstraints&lt;NGparam&gt; where NGparam : class, new()" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CompoundConstraints`1&lt;class .ctor NGparam&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="NGparam">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="NGparam">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CompoundConstraints ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CompoundConstraintClass&lt;param&gt;">
+ <MemberSignature Language="C#" Value="public static void CompoundConstraintClass&lt;param&gt; () where param : class, new();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CompoundConstraintClass&lt;class .ctor param&gt;() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="param">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected.since/index.xml b/mdoc/Test/en.expected.since/index.xml
index 0e220307..c06f7826 100644
--- a/mdoc/Test/en.expected.since/index.xml
+++ b/mdoc/Test/en.expected.since/index.xml
@@ -36,6 +36,7 @@
<Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="CompoundConstraints`1" DisplayName="CompoundConstraints&lt;NGparam&gt;" Kind="Class" />
<Type Name="Extensions" Kind="Class" />
<Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
<Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
diff --git a/mdoc/Test/en.expected/Mono.DocTest.Generic/CompoundConstraints`1.xml b/mdoc/Test/en.expected/Mono.DocTest.Generic/CompoundConstraints`1.xml
new file mode 100644
index 00000000..5aaf82fd
--- /dev/null
+++ b/mdoc/Test/en.expected/Mono.DocTest.Generic/CompoundConstraints`1.xml
@@ -0,0 +1,80 @@
+<Type Name="CompoundConstraints&lt;NGparam&gt;" FullName="Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;">
+ <TypeSignature Language="C#" Value="public class CompoundConstraints&lt;NGparam&gt; where NGparam : class, new()" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CompoundConstraints`1&lt;class .ctor NGparam&gt; extends System.Object" />
+ <TypeSignature Language="DocId" Value="T:Mono.DocTest.Generic.CompoundConstraints`1" />
+ <TypeSignature Language="VB.NET" Value="Public Class CompoundConstraints(Of NGparam)" />
+ <TypeSignature Language="F#" Value="type CompoundConstraints&lt;'NGparam (requires 'NGparam : null and 'NGparam : (new : unit -&gt; 'NGparam))&gt; = class" />
+ <TypeSignature Language="C++ CLI" Value="generic &lt;typename NGparam&gt;&#xA; where NGparam : class, gcnew()public ref class CompoundConstraints" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="NGparam">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="NGparam">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CompoundConstraints ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="DocId" Value="M:Mono.DocTest.Generic.CompoundConstraints`1.#ctor" />
+ <MemberSignature Language="VB.NET" Value="Public Sub New ()" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA; CompoundConstraints();" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; CompoundConstraints();" />
+ <MemberSignature Language="C++ WINRT" Value=" CompoundConstraints();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CompoundConstraintClass&lt;param&gt;">
+ <MemberSignature Language="C#" Value="public static void CompoundConstraintClass&lt;param&gt; () where param : class, new();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CompoundConstraintClass&lt;class .ctor param&gt;() cil managed" />
+ <MemberSignature Language="DocId" Value="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1" />
+ <MemberSignature Language="VB.NET" Value="Public Shared Sub CompoundConstraintClass(Of param As {Class, New}) ()" />
+ <MemberSignature Language="F#" Value="static member CompoundConstraintClass : unit -&gt; unit (requires 'param : null and 'param : (new : unit -&gt; 'param))" Usage="Mono.DocTest.Generic.CompoundConstraints&lt;'NGparam (requires 'NGparam : null and 'NGparam : (new : unit -&gt; 'NGparam))&gt;.CompoundConstraintClass " />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA;generic &lt;typename param&gt;&#xA; where param : class, gcnew() static void CompoundConstraintClass();" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename param&gt;&#xA; where param : class, gcnew() static void CompoundConstraintClass();" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename param&gt;&#xA; where param : class, gcnew() static void CompoundConstraintClass();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="param">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected/Mono.DocTest.Generic/Extensions.xml b/mdoc/Test/en.expected/Mono.DocTest.Generic/Extensions.xml
index 98746f90..2663c3a5 100644
--- a/mdoc/Test/en.expected/Mono.DocTest.Generic/Extensions.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest.Generic/Extensions.xml
@@ -6,7 +6,7 @@
<TypeSignature Language="F#" Value="type Extensions = class" />
<TypeSignature Language="C++ CLI" Value="public ref class Extensions abstract sealed" />
<TypeSignature Language="C++ CX" Value="public ref class Extensions abstract sealed" />
- <TypeSignature Language="C++ WINRT" Value="class Extensions abstract final" />
+ <TypeSignature Language="C++ WINRT" Value="class Extensions final" />
<AssemblyInfo>
<AssemblyName>DocTest</AssemblyName>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml b/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml
index 083daab5..31a89773 100644
--- a/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml
@@ -49,7 +49,7 @@
<MemberSignature Language="F#" Value="member this.BaseMethod : 'S -&gt; 'U" Usage="genericBase.BaseMethod genericParameter" />
<MemberSignature Language="C++ CLI" Value="public:&#xA;generic &lt;typename S&gt;&#xA; U BaseMethod(S genericParameter);" />
<MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename S&gt;&#xA; U BaseMethod(S genericParameter);" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename S&gt;&#xA; U BaseMethod(S genericParameter);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename S&gt;&#xA; U BaseMethod(S const&amp; genericParameter);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -107,7 +107,7 @@
<MemberSignature Language="VB.NET" Value="Public Custom Event ItemChanged As Action(Of MyList(Of U), MyList(Of U).Helper(Of U, U)) " />
<MemberSignature Language="F#" Value="member this.ItemChanged : Action&lt;Mono.DocTest.Generic.MyList&lt;'U&gt;, Mono.DocTest.Generic.MyList&lt;'U&gt;.Helper&lt;'U, 'U&gt;&gt; " Usage="member this.ItemChanged : System.Action&lt;Mono.DocTest.Generic.MyList&lt;'U&gt;, Mono.DocTest.Generic.MyList&lt;'U&gt;.Helper&lt;'U, 'U&gt;&gt; " />
<MemberSignature Language="C++ CLI" Value="public:&#xA; event Action&lt;Mono::DocTest::Generic::MyList&lt;U&gt; ^, Mono::DocTest::Generic::MyList&lt;U&gt;::Helper&lt;U, U&gt; ^&gt; ^ ItemChanged;" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token ItemChanged(Action&lt;Mono::DocTest::Generic::MyList&lt;U&gt;, Mono::DocTest::Generic::MyList&lt;U&gt;::Helper&lt;U, U&gt; const &amp;&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void ItemChanged(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;ItemChanged_revoker ItemChanged(auto_revoke_t, Action&lt;Mono::DocTest::Generic::MyList&lt;U&gt;, Mono::DocTest::Generic::MyList&lt;U&gt;::Helper&lt;U, U&gt; const &amp;&gt; const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token ItemChanged(Action&lt;Mono::DocTest::Generic::MyList&lt;U&gt;, Mono::DocTest::Generic::MyList&lt;U&gt;::Helper&lt;U, U&gt; const&amp;&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void ItemChanged(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;GenericBase`1::ItemChanged_revoker ItemChanged(auto_revoke_t, Action&lt;Mono::DocTest::Generic::MyList&lt;U&gt;, Mono::DocTest::Generic::MyList&lt;U&gt;::Helper&lt;U, U&gt; const&amp;&gt; const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -127,7 +127,7 @@
<MemberSignature Language="VB.NET" Value="Public Custom Event MyEvent As EventHandler(Of GenericBase(Of U).FooEventArgs) " />
<MemberSignature Language="F#" Value="member this.MyEvent : EventHandler&lt;Mono.DocTest.Generic.GenericBase&lt;'U&gt;.FooEventArgs&gt; " Usage="member this.MyEvent : System.EventHandler&lt;Mono.DocTest.Generic.GenericBase&lt;'U&gt;.FooEventArgs&gt; " />
<MemberSignature Language="C++ CLI" Value="public:&#xA; event EventHandler&lt;Mono::DocTest::Generic::GenericBase&lt;U&gt;::FooEventArgs ^&gt; ^ MyEvent;" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token MyEvent(EventHandler&lt;Mono::DocTest::Generic::GenericBase&lt;U&gt;::FooEventArgs&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void MyEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;MyEvent_revoker MyEvent(auto_revoke_t, EventHandler&lt;Mono::DocTest::Generic::GenericBase&lt;U&gt;::FooEventArgs&gt; const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token MyEvent(EventHandler&lt;Mono::DocTest::Generic::GenericBase&lt;U&gt;::FooEventArgs&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void MyEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;GenericBase`1::MyEvent_revoker MyEvent(auto_revoke_t, EventHandler&lt;Mono::DocTest::Generic::GenericBase&lt;U&gt;::FooEventArgs&gt; const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -147,7 +147,7 @@
<MemberSignature Language="VB.NET" Value="Public Shared Narrowing Operator CType (list As GenericBase(Of U)) As U" />
<MemberSignature Language="F#" Value="static member op_Explicit : Mono.DocTest.Generic.GenericBase&lt;'U&gt; -&gt; 'U" Usage="Mono.DocTest.Generic.GenericBase&lt;'U&gt;.op_Explicit list" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static explicit operator U(Mono::DocTest::Generic::GenericBase&lt;U&gt; ^ list);" />
- <MemberSignature Language="C++ WINRT" Value=" static explicit operator U(Mono::DocTest::Generic::GenericBase&lt;U&gt; const &amp; list);" />
+ <MemberSignature Language="C++ WINRT" Value=" static explicit operator U(Mono::DocTest::Generic::GenericBase&lt;U&gt; const&amp; list);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected/Mono.DocTest.Generic/IFoo`1.xml b/mdoc/Test/en.expected/Mono.DocTest.Generic/IFoo`1.xml
index fec45e1c..8ba61d91 100644
--- a/mdoc/Test/en.expected/Mono.DocTest.Generic/IFoo`1.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest.Generic/IFoo`1.xml
@@ -29,7 +29,7 @@
<MemberSignature Language="F#" Value="abstract member Method : 'T * 'U -&gt; 'T" Usage="iFoo.Method (t, u)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA;generic &lt;typename U&gt;&#xA; T Method(T t, U u);" />
<MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename U&gt;&#xA; T Method(T t, U u);" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; T Method(T t, U u);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; T Method(T const&amp; t, U const&amp; u);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1+Helper`2.xml b/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1+Helper`2.xml
index b0afe1a6..5e95262c 100644
--- a/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1+Helper`2.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1+Helper`2.xml
@@ -52,7 +52,7 @@
<MemberSignature Language="F#" Value="member this.UseT : 'T * 'U * 'V -&gt; unit" Usage="helper.UseT (a, b, c)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; void UseT(T a, U b, V c);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; void UseT(T a, U b, V c);" />
- <MemberSignature Language="C++ WINRT" Value="void UseT(T a, U b, V c);" />
+ <MemberSignature Language="C++ WINRT" Value="void UseT(T const&amp; a, U const&amp; b, V const&amp; c);" />
<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 ef270948..877bd5fc 100644
--- a/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`1.xml
@@ -118,7 +118,7 @@
<MemberSignature Language="F#" Value="member this.Method : 'T * 'U -&gt; unit" Usage="myList.Method (t, u)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA;generic &lt;typename U&gt;&#xA; void Method(T t, U u);" />
<MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename U&gt;&#xA; void Method(T t, U u);" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; void Method(T t, U u);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; void Method(T const&amp; t, U const&amp; u);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -148,7 +148,7 @@
<MemberSignature Language="VB.NET" Value="Public Sub RefMethod(Of U) (ByRef t As T, ByRef u As U)" />
<MemberSignature Language="F#" Value="member this.RefMethod : 'T * 'U -&gt; unit" Usage="myList.RefMethod (t, u)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA;generic &lt;typename U&gt;&#xA; void RefMethod(T % t, U % u);" />
- <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename U&gt;&#xA; void RefMethod(T &amp; t, U &amp; u);" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename U&gt;&#xA; void RefMethod(T &amp; t, U &amp; u);" />
<MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; void RefMethod(T &amp; t, U &amp; u);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
@@ -204,7 +204,7 @@
<MemberSignature Language="F#" Value="member this.Test : 'T -&gt; unit" Usage="myList.Test t" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; void Test(T t);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; void Test(T t);" />
- <MemberSignature Language="C++ WINRT" Value="void Test(T t);" />
+ <MemberSignature Language="C++ WINRT" Value="void Test(T const&amp; t);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -228,7 +228,7 @@
<MemberSignature Language="VB.NET" Value="Public Sub UseHelper(Of U, V) (helper As MyList(Of T).Helper(Of U, V))" />
<MemberSignature Language="F#" Value="member this.UseHelper : Mono.DocTest.Generic.MyList&lt;'T&gt;.Helper&lt;'U, 'V&gt; -&gt; unit" Usage="myList.UseHelper helper" />
<MemberSignature Language="C++ CLI" Value="public:&#xA;generic &lt;typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; ^ helper);" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; const &amp; helper);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; const&amp; helper);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`2.xml b/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`2.xml
index c4a8f44f..12764a81 100644
--- a/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`2.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest.Generic/MyList`2.xml
@@ -89,7 +89,7 @@
<MemberSignature Language="F#" Value="abstract member CopyTo : 'A[] * int -&gt; unit&#xA;override this.CopyTo : 'A[] * int -&gt; unit" Usage="myList.CopyTo (array, arrayIndex)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; virtual void CopyTo(cli::array &lt;A&gt; ^ array, int arrayIndex);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; void CopyTo(Platform::Array &lt;A&gt; ^ array, int arrayIndex);" />
- <MemberSignature Language="C++ WINRT" Value="void CopyTo(std::Array &lt;A&gt; const &amp; array, int arrayIndex);" />
+ <MemberSignature Language="C++ WINRT" Value="void CopyTo(winrt::array_view &lt;A&gt; const&amp; array, int const&amp; arrayIndex);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.Generic.ICollection`1.CopyTo(`0[],System.Int32)</InterfaceMember>
@@ -236,7 +236,7 @@
<MemberSignature Language="F#" Value="abstract member Mono.DocTest.Generic.IFoo&lt;A&gt;.Method : 'A * 'U -&gt; 'A&#xA;override this.Mono.DocTest.Generic.IFoo&lt;A&gt;.Method : 'A * 'U -&gt; 'A" Usage="myList.Mono.DocTest.Generic.IFoo&lt;A&gt;.Method (a, u)" />
<MemberSignature Language="C++ CLI" Value="generic &lt;typename U&gt;&#xA; virtual A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method(A a, U u) = Mono::DocTest::Generic::IFoo&lt;A&gt;::Method;" />
<MemberSignature Language="C++ CX" Value="generic &lt;typename U&gt;&#xA; virtual A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method(A a, U u) = Mono::DocTest::Generic::IFoo&lt;A&gt;::Method;" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method(A a, U u);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method(A const&amp; a, U const&amp; u);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:Mono.DocTest.Generic.IFoo`1.Method``1(`0,``0)</InterfaceMember>
@@ -322,7 +322,7 @@
<MemberSignature Language="F#" Value="abstract member System.Collections.Generic.ICollection&lt;A&gt;.Add : 'A -&gt; unit&#xA;override this.System.Collections.Generic.ICollection&lt;A&gt;.Add : 'A -&gt; unit" Usage="myList.System.Collections.Generic.ICollection&lt;A&gt;.Add item" />
<MemberSignature Language="C++ CLI" Value=" virtual void System.Collections.Generic.ICollection&lt;A&gt;.Add(A item) = System::Collections::Generic::ICollection&lt;A&gt;::Add;" />
<MemberSignature Language="C++ CX" Value=" virtual void System.Collections.Generic.ICollection&lt;A&gt;.Add(A item) = System::Collections::Generic::ICollection&lt;A&gt;::Add;" />
- <MemberSignature Language="C++ WINRT" Value="void System.Collections.Generic.ICollection&lt;A&gt;.Add(A item);" />
+ <MemberSignature Language="C++ WINRT" Value="void System.Collections.Generic.ICollection&lt;A&gt;.Add(A const&amp; item);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.Generic.ICollection`1.Add(`0)</InterfaceMember>
@@ -375,7 +375,7 @@
<MemberSignature Language="F#" Value="abstract member System.Collections.Generic.ICollection&lt;A&gt;.Contains : 'A -&gt; bool&#xA;override this.System.Collections.Generic.ICollection&lt;A&gt;.Contains : 'A -&gt; bool" Usage="myList.System.Collections.Generic.ICollection&lt;A&gt;.Contains item" />
<MemberSignature Language="C++ CLI" Value=" virtual bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(A item) = System::Collections::Generic::ICollection&lt;A&gt;::Contains;" />
<MemberSignature Language="C++ CX" Value=" virtual bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(A item) = System::Collections::Generic::ICollection&lt;A&gt;::Contains;" />
- <MemberSignature Language="C++ WINRT" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(A item);" />
+ <MemberSignature Language="C++ WINRT" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(A const&amp; item);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.Generic.ICollection`1.Contains(`0)</InterfaceMember>
@@ -429,7 +429,7 @@
<MemberSignature Language="F#" Value="abstract member System.Collections.Generic.ICollection&lt;A&gt;.Remove : 'A -&gt; bool&#xA;override this.System.Collections.Generic.ICollection&lt;A&gt;.Remove : 'A -&gt; bool" Usage="myList.System.Collections.Generic.ICollection&lt;A&gt;.Remove item" />
<MemberSignature Language="C++ CLI" Value=" virtual bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(A item) = System::Collections::Generic::ICollection&lt;A&gt;::Remove;" />
<MemberSignature Language="C++ CX" Value=" virtual bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(A item) = System::Collections::Generic::ICollection&lt;A&gt;::Remove;" />
- <MemberSignature Language="C++ WINRT" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(A item);" />
+ <MemberSignature Language="C++ WINRT" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(A const&amp; item);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.Collections.Generic.ICollection`1.Remove(`0)</InterfaceMember>
diff --git a/mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml b/mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml
index e86f9763..1ea7131d 100644
--- a/mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml
@@ -35,7 +35,7 @@
<MemberSignature Language="JavaScript" Value="function DocAttribute(docs)" Usage="var docAttribute = new DocAttribute(docs);" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; DocAttribute(System::String ^ docs);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; DocAttribute(Platform::String ^ docs);" />
- <MemberSignature Language="C++ WINRT" Value=" DocAttribute(winrt::hstring const &amp; docs);" />
+ <MemberSignature Language="C++ WINRT" Value=" DocAttribute(winrt::hstring const&amp; docs);" />
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml b/mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml
index 7bbb671b..212c8444 100644
--- a/mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml
@@ -34,7 +34,7 @@
<MemberSignature Language="JavaScript" Value="function m(i)" Usage="docValueType.m(i)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; void M(int i);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; void M(int i);" />
- <MemberSignature Language="C++ WINRT" Value="void M(int i);" />
+ <MemberSignature Language="C++ WINRT" Value="void M(int const&amp; i);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected/Mono.DocTest/UseLists.xml b/mdoc/Test/en.expected/Mono.DocTest/UseLists.xml
index bdad0604..d2646adc 100644
--- a/mdoc/Test/en.expected/Mono.DocTest/UseLists.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest/UseLists.xml
@@ -179,7 +179,7 @@
<MemberSignature Language="VB.NET" Value="Public Sub UseHelper(Of T, U, V) (helper As MyList(Of T).Helper(Of U, V))" />
<MemberSignature Language="F#" Value="member this.UseHelper : Mono.DocTest.Generic.MyList&lt;'T&gt;.Helper&lt;'U, 'V&gt; -&gt; unit" Usage="useLists.UseHelper helper" />
<MemberSignature Language="C++ CLI" Value="public:&#xA;generic &lt;typename T, typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; ^ helper);" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename T, typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; const &amp; helper);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename T, typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; const&amp; helper);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass.xml b/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass.xml
index 5fc561bf..a3c8e1ce 100644
--- a/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass.xml
@@ -43,7 +43,7 @@
<MemberSignature Language="F#" Value="member this.M : int -&gt; unit" Usage="nestedClass.M i" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; void M(int i);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; void M(int i);" />
- <MemberSignature Language="C++ WINRT" Value="void M(int i);" />
+ <MemberSignature Language="C++ WINRT" Value="void M(int const&amp; i);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass`1.xml b/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass`1.xml
index f14b1639..580dccd7 100644
--- a/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass`1.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest/Widget+NestedClass`1.xml
@@ -47,7 +47,7 @@
<MemberSignature Language="F#" Value="member this.M : int -&gt; unit" Usage="nestedClass.M i" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; void M(int i);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; void M(int i);" />
- <MemberSignature Language="C++ WINRT" Value="void M(int i);" />
+ <MemberSignature Language="C++ WINRT" Value="void M(int const&amp; i);" />
<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 3d88d65c..4a2d0cc6 100644
--- a/mdoc/Test/en.expected/Mono.DocTest/Widget.xml
+++ b/mdoc/Test/en.expected/Mono.DocTest/Widget.xml
@@ -72,7 +72,7 @@
<MemberSignature Language="JavaScript" Value="function Widget(s)" Usage="var widget = new Widget(s);" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; Widget(System::String ^ s);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; Widget(Platform::String ^ s);" />
- <MemberSignature Language="C++ WINRT" Value=" Widget(winrt::hstring const &amp; s);" />
+ <MemberSignature Language="C++ WINRT" Value=" Widget(winrt::hstring const&amp; s);" />
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -95,7 +95,7 @@
<MemberSignature Language="JavaScript" Usage="function onAnEvent(eventArgs) { /* Your code */ }&#xA;widget.addEventListener(&quot;anevent&quot;, onAnEvent);&#xA;widget.removeEventListener(&quot;anevent&quot;, onAnEvent);&#xA;- or -&#xA;widget.onanevent = onAnEvent;" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; event Mono::DocTest::Widget::Del ^ AnEvent;" />
<MemberSignature Language="C++ CX" Value="public:&#xA; event Mono::DocTest::Widget::Del ^ AnEvent;" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token AnEvent(Mono::DocTest::Widget::Del const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void AnEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;AnEvent_revoker AnEvent(auto_revoke_t, Mono::DocTest::Widget::Del const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token AnEvent(Mono::DocTest::Widget::Del const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void AnEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;Widget::AnEvent_revoker AnEvent(auto_revoke_t, Mono::DocTest::Widget::Del const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -133,7 +133,7 @@
<MemberSignature Language="F#" Value="member this.AnotherEvent : Mono.DocTest.Widget.Del " Usage="member this.AnotherEvent : Mono.DocTest.Widget.Del " />
<MemberSignature Language="C++ CLI" Value="protected:&#xA; event Mono::DocTest::Widget::Del ^ AnotherEvent;" />
<MemberSignature Language="C++ CX" Value="protected:&#xA; event Mono::DocTest::Widget::Del ^ AnotherEvent;" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token AnotherEvent(Mono::DocTest::Widget::Del const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void AnotherEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;AnotherEvent_revoker AnotherEvent(auto_revoke_t, Mono::DocTest::Widget::Del const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token AnotherEvent(Mono::DocTest::Widget::Del const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void AnotherEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;Widget::AnotherEvent_revoker AnotherEvent(auto_revoke_t, Mono::DocTest::Widget::Del const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -153,7 +153,7 @@
<MemberSignature Language="VB.NET" Value="Public array1 As Long() " />
<MemberSignature Language="F#" Value="val mutable array1 : int64[]" Usage="Mono.DocTest.Widget.array1" />
<MemberSignature Language="C++ CLI" Value="public: cli::array &lt;long&gt; ^ array1;" />
- <MemberSignature Language="C++ WINRT" Value="std::Array &lt;long&gt; array1;" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::array_view &lt;long&gt; array1;" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -173,7 +173,7 @@
<MemberSignature Language="VB.NET" Value="Public array2 As Widget(,) " />
<MemberSignature Language="F#" Value="val mutable array2 : Mono.DocTest.Widget[,]" Usage="Mono.DocTest.Widget.array2" />
<MemberSignature Language="C++ CLI" Value="public: cli::array &lt;Mono::DocTest::Widget ^, 2&gt; ^ array2;" />
- <MemberSignature Language="C++ WINRT" Value="std::Array &lt;Mono::DocTest::Widget const &amp;, 2&gt; array2;" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::array_view &lt;Mono::DocTest::Widget const&amp;, 2&gt; array2;" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -193,7 +193,7 @@
<MemberSignature Language="VB.NET" Value="Public Shared ReadOnly classCtorError As String() " />
<MemberSignature Language="F#" Value=" staticval mutable classCtorError : string[]" Usage="Mono.DocTest.Widget.classCtorError" />
<MemberSignature Language="C++ CLI" Value="public: static initonly cli::array &lt;System::String ^&gt; ^ classCtorError;" />
- <MemberSignature Language="C++ WINRT" Value="static initonly std::Array &lt;winrt::hstring const &amp;&gt; classCtorError;" />
+ <MemberSignature Language="C++ WINRT" Value="static initonly winrt::array_view &lt;winrt::hstring const&amp;&gt; classCtorError;" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -213,7 +213,7 @@
<MemberSignature Language="VB.NET" Value="Public Sub Default (Optional a As Integer = 1, Optional b As Integer = 2)" />
<MemberSignature Language="F#" Value="member this.Default : int * int -&gt; unit" Usage="widget.Default (a, b)" />
<MemberSignature Language="JavaScript" Value="function default(a, b)" Usage="widget.default(a, b)" />
- <MemberSignature Language="C++ WINRT" Value="void Default(int a = 1, int b = 2);" />
+ <MemberSignature Language="C++ WINRT" Value="void Default(int const&amp; a = 1, int const&amp; b = 2);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -239,7 +239,7 @@
<MemberSignature Language="VB.NET" Value="Public Sub Default (Optional a As String = &quot;a&quot;, Optional b As Char = '\0')" />
<MemberSignature Language="F#" Value="member this.Default : string * char -&gt; unit" Usage="widget.Default (a, b)" />
<MemberSignature Language="JavaScript" Value="function default(a, b)" Usage="widget.default(a, b)" />
- <MemberSignature Language="C++ WINRT" Value="void Default(winrt::hstring const &amp; a = &quot;a&quot;, char b = '\0');" />
+ <MemberSignature Language="C++ WINRT" Value="void Default(winrt::hstring const&amp; a = &quot;a&quot;, char const&amp; b = '\0');" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -288,7 +288,7 @@
<MemberSignature Language="JavaScript" Value="function dynamic0(a, b)" Usage="var object = widget.dynamic0(a, b)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; System::Object ^ Dynamic0(System::Object ^ a, System::Object ^ b);" />
<MemberSignature Language="C++ CX" Value="public:&#xA; Platform::Object ^ Dynamic0(Platform::Object ^ a, Platform::Object ^ b);" />
- <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IInspectable Dynamic0(winrt::Windows::Foundation::IInspectable const &amp; a, winrt::Windows::Foundation::IInspectable const &amp; b);" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IInspectable Dynamic0(winrt::Windows::Foundation::IInspectable const&amp; a, winrt::Windows::Foundation::IInspectable const&amp; b);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -391,7 +391,7 @@
<MemberSignature Language="F#" Value="member this.DynamicE1 : Func&lt;obj&gt; " Usage="member this.DynamicE1 : System.Func&lt;System.obj&gt; " />
<MemberSignature Language="JavaScript" Usage="function onDynamicE1(eventArgs) { /* Your code */ }&#xA;widget.addEventListener(&quot;dynamice1&quot;, onDynamicE1);&#xA;widget.removeEventListener(&quot;dynamice1&quot;, onDynamicE1);&#xA;- or -&#xA;widget.ondynamice1 = onDynamicE1;" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; event Func&lt;System::Object ^&gt; ^ DynamicE1;" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token DynamicE1(Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void DynamicE1(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;DynamicE1_revoker DynamicE1(auto_revoke_t, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token DynamicE1(Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void DynamicE1(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;Widget::DynamicE1_revoker DynamicE1(auto_revoke_t, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -419,7 +419,7 @@
<MemberSignature Language="F#" Value="member this.DynamicE2 : Func&lt;obj&gt; " Usage="member this.DynamicE2 : System.Func&lt;System.obj&gt; " />
<MemberSignature Language="JavaScript" Usage="function onDynamicE2(eventArgs) { /* Your code */ }&#xA;widget.addEventListener(&quot;dynamice2&quot;, onDynamicE2);&#xA;widget.removeEventListener(&quot;dynamice2&quot;, onDynamicE2);&#xA;- or -&#xA;widget.ondynamice2 = onDynamicE2;" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; event Func&lt;System::Object ^&gt; ^ DynamicE2;" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token DynamicE2(Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void DynamicE2(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;DynamicE2_revoker DynamicE2(auto_revoke_t, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token DynamicE2(Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void DynamicE2(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;Widget::DynamicE2_revoker DynamicE2(auto_revoke_t, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -459,7 +459,7 @@
<MemberSignature Language="F#" Value="member this.DynamicP : Func&lt;Func&lt;string, obj, string&gt;, Func&lt;obj, Func&lt;obj&gt;, string&gt;&gt;" Usage="Mono.DocTest.Widget.DynamicP" />
<MemberSignature Language="JavaScript" Usage="var func = widget.dynamicP;" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; property Func&lt;Func&lt;System::String ^, System::Object ^, System::String ^&gt; ^, Func&lt;System::Object ^, Func&lt;System::Object ^&gt; ^, System::String ^&gt; ^&gt; ^ DynamicP { Func&lt;Func&lt;System::String ^, System::Object ^, System::String ^&gt; ^, Func&lt;System::Object ^, Func&lt;System::Object ^&gt; ^, System::String ^&gt; ^&gt; ^ get(); };" />
- <MemberSignature Language="C++ WINRT" Value="Func&lt;Func&lt;winrt::hstring, winrt::Windows::Foundation::IInspectable const &amp;, winrt::hstring const &amp;&gt;, Func&lt;winrt::Windows::Foundation::IInspectable, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const &amp;, winrt::hstring const &amp;&gt; const &amp;&gt; DynamicP();" />
+ <MemberSignature Language="C++ WINRT" Value="Func&lt;Func&lt;winrt::hstring, winrt::Windows::Foundation::IInspectable const&amp;, winrt::hstring const&amp;&gt;, Func&lt;winrt::Windows::Foundation::IInspectable, Func&lt;winrt::Windows::Foundation::IInspectable&gt; const&amp;, winrt::hstring const&amp;&gt; const&amp;&gt; DynamicP();" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -596,7 +596,8 @@
<MemberSignature Language="VB.NET" Value="Public Sub M1 (c As Char, ByRef f As Single, ByRef v As DocValueType)" />
<MemberSignature Language="F#" Value="member this.M1 : char * single * DocValueType -&gt; unit" Usage="widget.M1 (c, f, v)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; void M1(char c, [Runtime::InteropServices::Out] float % f, Mono::DocTest::DocValueType % v);" />
- <MemberSignature Language="C++ WINRT" Value="void M1(char c, [Runtime::InteropServices::Out] float &amp; f, Mono::DocTest::DocValueType &amp; v);" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void M1(char16 c, [Runtime::InteropServices::Out] float &amp; f, Mono::DocTest::DocValueType &amp; v);" />
+ <MemberSignature Language="C++ WINRT" Value="void M1(char const&amp; c, [Runtime::InteropServices::Out] float &amp; f, Mono::DocTest::DocValueType &amp; v);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -663,7 +664,7 @@
<MemberSignature Language="F#" Value="member this.M2 : int16[] * int[,] * int64[][] -&gt; unit" Usage="widget.M2 (x1, x2, x3)" />
<MemberSignature Language="JavaScript" Value="function m2(x1, x2, x3)" Usage="widget.m2(x1, x2, x3)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; void M2(cli::array &lt;short&gt; ^ x1, cli::array &lt;int, 2&gt; ^ x2, cli::array &lt;cli::array &lt;long&gt; ^&gt; ^ x3);" />
- <MemberSignature Language="C++ WINRT" Value="void M2(std::Array &lt;short&gt; const &amp; x1, std::Array &lt;int, 2&gt; const &amp; x2, std::Array &lt;std::Array &lt;long&gt; const &amp;&gt; const &amp; x3);" />
+ <MemberSignature Language="C++ WINRT" Value="void M2(winrt::array_view &lt;short&gt; const&amp; x1, winrt::array_view &lt;int, 2&gt; const&amp; x2, winrt::array_view &lt;winrt::array_view &lt;long&gt; const&amp;&gt; const&amp; x3);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -692,7 +693,7 @@
<MemberSignature Language="F#" Value="member this.M3 : int64[][] * Mono.DocTest.Widget[,,][] -&gt; unit" Usage="widget.M3 (x3, x4)" />
<MemberSignature Language="JavaScript" Value="function m3(x3, x4)" Usage="widget.m3(x3, x4)" />
<MemberSignature Language="C++ CLI" Value="protected:&#xA; void M3(cli::array &lt;cli::array &lt;long&gt; ^&gt; ^ x3, cli::array &lt;cli::array &lt;Mono::DocTest::Widget ^, 3&gt; ^&gt; ^ x4);" />
- <MemberSignature Language="C++ WINRT" Value="void M3(std::Array &lt;std::Array &lt;long&gt; const &amp;&gt; const &amp; x3, std::Array &lt;std::Array &lt;Mono::DocTest::Widget const &amp;, 3&gt; const &amp;&gt; const &amp; x4);" />
+ <MemberSignature Language="C++ WINRT" Value="void M3(winrt::array_view &lt;winrt::array_view &lt;long&gt; const&amp;&gt; const&amp; x3, winrt::array_view &lt;winrt::array_view &lt;Mono::DocTest::Widget const&amp;, 3&gt; const&amp;&gt; const&amp; x4);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -744,7 +745,7 @@
<MemberSignature Language="F#" Value="member this.M5 : nativeptr&lt;unit&gt; * nativeptr&lt;double&gt;[,][] -&gt; unit" Usage="widget.M5 (pv, pd)" />
<MemberSignature Language="JavaScript" Value="function m5(pv, pd)" Usage="widget.m5(pv, pd)" />
<MemberSignature Language="C++ CLI" Value="protected:&#xA; void M5(void* pv, cli::array &lt;cli::array &lt;double*, 2&gt; ^&gt; ^ pd);" />
- <MemberSignature Language="C++ WINRT" Value="void M5(void* pv, std::Array &lt;std::Array &lt;double*, 2&gt; const &amp;&gt; const &amp; pd);" />
+ <MemberSignature Language="C++ WINRT" Value="void M5(void* pv, winrt::array_view &lt;winrt::array_view &lt;double*, 2&gt; const&amp;&gt; const&amp; pd);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -805,7 +806,7 @@
<MemberSignature Language="F#" Value="member this.M7 : Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple -&gt; unit" Usage="widget.M7 a" />
<MemberSignature Language="JavaScript" Value="function m7(a)" Usage="widget.m7(a)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; void M7(Mono::DocTest::Widget::NestedClass::Double::Triple::Quadruple ^ a);" />
- <MemberSignature Language="C++ WINRT" Value="void M7(Mono::DocTest::Widget::NestedClass::Double::Triple::Quadruple const &amp; a);" />
+ <MemberSignature Language="C++ WINRT" Value="void M7(Mono::DocTest::Widget::NestedClass::Double::Triple::Quadruple const&amp; a);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -870,7 +871,7 @@
<MemberSignature Language="VB.NET" Value="Public Shared Operator + (x1 As Widget, x2 As Widget) As Widget" />
<MemberSignature Language="F#" Value="static member ( + ) : Mono.DocTest.Widget * Mono.DocTest.Widget -&gt; Mono.DocTest.Widget" Usage="x1 + x2" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static Mono::DocTest::Widget ^ operator +(Mono::DocTest::Widget ^ x1, Mono::DocTest::Widget ^ x2);" />
- <MemberSignature Language="C++ WINRT" Value=" static Mono::DocTest::Widget operator +(Mono::DocTest::Widget const &amp; x1, Mono::DocTest::Widget const &amp; x2);" />
+ <MemberSignature Language="C++ WINRT" Value=" static Mono::DocTest::Widget operator +(Mono::DocTest::Widget const&amp; x1, Mono::DocTest::Widget const&amp; x2);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -917,7 +918,7 @@
<MemberSignature Language="VB.NET" Value="Public Shared Narrowing Operator CType (x As Widget) As Integer" />
<MemberSignature Language="F#" Value="static member op_Explicit : Mono.DocTest.Widget -&gt; int" Usage="Mono.DocTest.Widget.op_Explicit x" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static explicit operator int(Mono::DocTest::Widget ^ x);" />
- <MemberSignature Language="C++ WINRT" Value=" static explicit operator int(Mono::DocTest::Widget const &amp; x);" />
+ <MemberSignature Language="C++ WINRT" Value=" static explicit operator int(Mono::DocTest::Widget const&amp; x);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -942,7 +943,7 @@
<MemberSignature Language="VB.NET" Value="Public Shared Widening Operator CType (x As Widget) As Long" />
<MemberSignature Language="F#" Value="static member op_Implicit : Mono.DocTest.Widget -&gt; int64" Usage="Mono.DocTest.Widget.op_Implicit x" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static operator long(Mono::DocTest::Widget ^ x);" />
- <MemberSignature Language="C++ WINRT" Value=" static operator long(Mono::DocTest::Widget const &amp; x);" />
+ <MemberSignature Language="C++ WINRT" Value=" static operator long(Mono::DocTest::Widget const&amp; x);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -967,7 +968,7 @@
<MemberSignature Language="VB.NET" Value="Public Shared Operator + (x As Widget) As Widget" />
<MemberSignature Language="F#" Value="static member ( ~+ ) : Mono.DocTest.Widget -&gt; Mono.DocTest.Widget" Usage="+ x" />
<MemberSignature Language="C++ CLI" Value="public:&#xA; static Mono::DocTest::Widget ^ operator +(Mono::DocTest::Widget ^ x);" />
- <MemberSignature Language="C++ WINRT" Value=" static Mono::DocTest::Widget operator +(Mono::DocTest::Widget const &amp; x);" />
+ <MemberSignature Language="C++ WINRT" Value=" static Mono::DocTest::Widget operator +(Mono::DocTest::Widget const&amp; x);" />
<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 e88435ab..29dbb360 100644
--- a/mdoc/Test/en.expected/System/Array.xml
+++ b/mdoc/Test/en.expected/System/Array.xml
@@ -105,8 +105,8 @@
<MemberSignature Language="VB.NET" Value="Public Shared Sub Resize(Of T) (ByRef array As T(), newSize As Integer)" />
<MemberSignature Language="F#" Value="static member Resize : T[] * int -&gt; unit" Usage="System.Array.Resize (array, newSize)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA;generic &lt;typename T&gt;&#xA; static void Resize(cli::array &lt;T&gt; ^ % array, int newSize);" />
- <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA; static void Resize(Platform::Array &lt;T&gt; ^ &amp; array, int newSize);" />
- <MemberSignature Language="C++ WINRT" Value="template &lt;typename T&gt;&#xA; static void Resize(std::Array &lt;T&gt; const &amp; &amp; array, int newSize);" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA; static void Resize(Platform::Array &lt;T&gt; ^ &amp; array, int newSize);" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename T&gt;&#xA; static void Resize(winrt::array_view &lt;T&gt; const&amp; &amp; array, int const&amp; newSize);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
diff --git a/mdoc/Test/en.expected/index.xml b/mdoc/Test/en.expected/index.xml
index 3937a118..e6e60ac8 100644
--- a/mdoc/Test/en.expected/index.xml
+++ b/mdoc/Test/en.expected/index.xml
@@ -35,6 +35,7 @@
<Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="CompoundConstraints`1" DisplayName="CompoundConstraints&lt;NGparam&gt;" Kind="Class" />
<Type Name="Extensions" Kind="Class" />
<Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
<Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class3.xml b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class3.xml
index f94f0111..6bee5520 100644
--- a/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class3.xml
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class3.xml
@@ -36,7 +36,7 @@
<Member MemberName="ArrayOfTypeProperty">
<MemberSignature Language="C#" Value="public Type[] ArrayOfTypeProperty { get; set; }" />
<MemberSignature Language="ILAsm" Value=".property instance class System.Type[] ArrayOfTypeProperty" />
- <MemberSignature Language="C++ WINRT" Value="std::Array &lt;Type const &amp;&gt; ArrayOfTypeProperty();&#xA;&#xA;void ArrayOfTypeProperty(std::Array &lt;Type const &amp;&gt; __set_formal);" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::array_view &lt;Type const&amp;&gt; ArrayOfTypeProperty();&#xA;&#xA;void ArrayOfTypeProperty(winrt::array_view &lt;Type const&amp;&gt; __set_formal);" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>255.255.255.255</AssemblyVersion>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/Namespace222/App.xml b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace222/App.xml
index 6a45fd01..00fcc78e 100644
--- a/mdoc/Test/ex.expected-cppwinrtuwp/Namespace222/App.xml
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace222/App.xml
@@ -60,7 +60,7 @@
<Member MemberName="Initialize">
<MemberSignature Language="C#" Value="public void Initialize (Windows.ApplicationModel.Core.CoreApplicationView applicationView);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Initialize([in]class Windows.ApplicationModel.Core.CoreApplicationView applicationView) runtime managed" />
- <MemberSignature Language="C++ WINRT" Value="void Initialize(winrt::Windows::ApplicationModel::Core::CoreApplicationView const &amp; applicationView);" />
+ <MemberSignature Language="C++ WINRT" Value="void Initialize(winrt::Windows::ApplicationModel::Core::CoreApplicationView const&amp; applicationView);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:Windows.ApplicationModel.Core.IFrameworkView.Initialize(Windows.ApplicationModel.Core.CoreApplicationView)</InterfaceMember>
@@ -83,7 +83,7 @@
<Member MemberName="Load">
<MemberSignature Language="C#" Value="public void Load (string entryPoint);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Load([in]string entryPoint) runtime managed" />
- <MemberSignature Language="C++ WINRT" Value="void Load(winrt::hstring const &amp; entryPoint);" />
+ <MemberSignature Language="C++ WINRT" Value="void Load(winrt::hstring const&amp; entryPoint);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:Windows.ApplicationModel.Core.IFrameworkView.Load(System.String)</InterfaceMember>
@@ -160,7 +160,7 @@
<Member MemberName="SetWindow">
<MemberSignature Language="C#" Value="public void SetWindow (Windows.UI.Core.CoreWindow window);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SetWindow([in]class Windows.UI.Core.CoreWindow window) runtime managed" />
- <MemberSignature Language="C++ WINRT" Value="void SetWindow(winrt::Windows::UI::Core::CoreWindow const &amp; window);" />
+ <MemberSignature Language="C++ WINRT" Value="void SetWindow(winrt::Windows::UI::Core::CoreWindow const&amp; window);" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:Windows.ApplicationModel.Core.IFrameworkView.SetWindow(Windows.UI.Core.CoreWindow)</InterfaceMember>
@@ -183,7 +183,7 @@
<Member MemberName="SetWindow1">
<MemberSignature Language="C#" Value="public void SetWindow1 (Windows.UI.Core.CoreWindow window);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SetWindow1([in]class Windows.UI.Core.CoreWindow window) runtime managed" />
- <MemberSignature Language="C++ WINRT" Value="void SetWindow1(winrt::Windows::UI::Core::CoreWindow const &amp; window);" />
+ <MemberSignature Language="C++ WINRT" Value="void SetWindow1(winrt::Windows::UI::Core::CoreWindow const&amp; window);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>255.255.255.255</AssemblyVersion>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Class1.xml b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Class1.xml
index 1b6b3723..63823405 100644
--- a/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Class1.xml
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Class1.xml
@@ -56,7 +56,7 @@
<Member MemberName="ComputeResult">
<MemberSignature Language="C#" Value="public Windows.Foundation.Collections.IVector&lt;double&gt; ComputeResult (double input);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Windows.Foundation.Collections.IVector`1&lt;float64&gt; ComputeResult([in]float64 input) runtime managed" />
- <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::Collections::IVector&lt;double&gt; ComputeResult(double input);" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::Collections::IVector&lt;double&gt; ComputeResult(double const&amp; input);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>255.255.255.255</AssemblyVersion>
@@ -77,7 +77,7 @@
<Member MemberName="GetPrimesOrdered">
<MemberSignature Language="C#" Value="public Windows.Foundation.IAsyncOperationWithProgress&lt;Windows.Foundation.Collections.IVector&lt;int&gt;,double&gt; GetPrimesOrdered (int first, int last);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Windows.Foundation.IAsyncOperationWithProgress`2&lt;class Windows.Foundation.Collections.IVector`1&lt;int32&gt;, float64&gt; GetPrimesOrdered([in]int32 first, [in]int32 last) runtime managed" />
- <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IAsyncOperationWithProgress&lt;winrt::Windows::Foundation::Collections::IVector&lt;int&gt;, double&gt; GetPrimesOrdered(int first, int last);" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IAsyncOperationWithProgress&lt;winrt::Windows::Foundation::Collections::IVector&lt;int&gt;, double&gt; GetPrimesOrdered(int const&amp; first, int const&amp; last);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>255.255.255.255</AssemblyVersion>
@@ -100,7 +100,7 @@
<Member MemberName="GetPrimesUnordered">
<MemberSignature Language="C#" Value="public Windows.Foundation.IAsyncActionWithProgress&lt;double&gt; GetPrimesUnordered (int first, int last);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Windows.Foundation.IAsyncActionWithProgress`1&lt;float64&gt; GetPrimesUnordered([in]int32 first, [in]int32 last) runtime managed" />
- <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IAsyncActionWithProgress&lt;double&gt; GetPrimesUnordered(int first, int last);" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IAsyncActionWithProgress&lt;double&gt; GetPrimesUnordered(int const&amp; first, int const&amp; last);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>255.255.255.255</AssemblyVersion>
@@ -123,7 +123,7 @@
<Member MemberName="primeFoundEvent">
<MemberSignature Language="C#" Value="public event UwpTestWinRtComponentCpp.PrimeFoundHandler primeFoundEvent;" />
<MemberSignature Language="ILAsm" Value=".event class UwpTestWinRtComponentCpp.PrimeFoundHandler primeFoundEvent" />
- <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token primeFoundEvent(UwpTestWinRtComponentCpp::PrimeFoundHandler const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void primeFoundEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;primeFoundEvent_revoker primeFoundEvent(auto_revoke_t, UwpTestWinRtComponentCpp::PrimeFoundHandler const&amp; handler) const;" />
+ <MemberSignature Language="C++ WINRT" Value="// Register&#xA;event_token primeFoundEvent(UwpTestWinRtComponentCpp::PrimeFoundHandler const&amp; handler) const;&#xA;&#xA;// Revoke with event_token&#xA;void primeFoundEvent(event_token const* cookie) const;&#xA;&#xA;// Revoke with event_revoker&#xA;Class1::primeFoundEvent_revoker primeFoundEvent(auto_revoke_t, UwpTestWinRtComponentCpp::PrimeFoundHandler const&amp; handler) const;" />
<MemberType>Event</MemberType>
<AssemblyInfo>
<AssemblyVersion>255.255.255.255</AssemblyVersion>
diff --git a/mdoc/Test/expected_statistics.txt b/mdoc/Test/expected_statistics.txt
index ae5b2bd0..404d8a31 100644
--- a/mdoc/Test/expected_statistics.txt
+++ b/mdoc/Test/expected_statistics.txt
@@ -1,16 +1,16 @@
Framework: one
--------
-Types Added: 32
+Types Added: 33
Types Removed: 0
-Types Total: 32
+Types Total: 33
Namespaces Added: 4
Namespaces Removed: 0
Namespaces Total: 4
-Members Added: 127
+Members Added: 129
Members Removed: 0
-Members Total: 127
+Members Total: 129
Framework: two
--------
diff --git a/mdoc/Test/html.expected-with-array-extension/Mono.DocTest.Generic/CompoundConstraints`1.html b/mdoc/Test/html.expected-with-array-extension/Mono.DocTest.Generic/CompoundConstraints`1.html
new file mode 100644
index 00000000..460e9f31
--- /dev/null
+++ b/mdoc/Test/html.expected-with-array-extension/Mono.DocTest.Generic/CompoundConstraints`1.html
@@ -0,0 +1,349 @@
+<html>
+ <head>
+ <title>Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style>
+ a { text-decoration: none }
+
+ div.SideBar {
+ padding-left: 1em;
+ padding-right: 1em;
+ right: 0;
+ float: right;
+ border: thin solid black;
+ background-color: #f2f2f2;
+ }
+
+ .CollectionTitle { font-weight: bold }
+ .PageTitle { font-size: 150%; font-weight: bold }
+
+ .Summary { }
+ .Signature { }
+ .Remarks { }
+ .Members { }
+ .Copyright { }
+
+ .Section { font-size: 125%; font-weight: bold }
+ p.Summary {
+ margin-left: 1em;
+ }
+ .SectionBox { margin-left: 2em }
+ .NamespaceName { font-size: 105%; font-weight: bold }
+ .NamespaceSumary { }
+ .MemberName { font-size: 115%; font-weight: bold; margin-top: 1em }
+ .Subsection { font-size: 105%; font-weight: bold }
+ .SubsectionBox { margin-left: 2em; margin-bottom: 1em }
+
+ .CodeExampleTable { background-color: #f5f5dd; border: thin solid black; padding: .25em; }
+
+ .TypesListing {
+ border-collapse: collapse;
+ }
+
+ td {
+ vertical-align: top;
+ }
+ th {
+ text-align: left;
+ }
+
+ .TypesListing td {
+ margin: 0px;
+ padding: .25em;
+ border: solid gray 1px;
+ }
+
+ .TypesListing th {
+ margin: 0px;
+ padding: .25em;
+ background-color: #f2f2f2;
+ border: solid gray 1px;
+ }
+
+ div.Footer {
+ border-top: 1px solid gray;
+ margin-top: 1.5em;
+ padding-top: 0.6em;
+ text-align: center;
+ color: gray;
+ }
+
+ span.NotEntered /* Documentation for this section has not yet been entered */ {
+ font-style: italic;
+ color: red;
+ }
+
+ div.Header {
+ background: #B0C4DE;
+ border: double;
+ border-color: white;
+ border-width: 7px;
+ padding: 0.5em;
+ }
+
+ div.Header * {
+ font-size: smaller;
+ }
+
+ div.Note {
+ }
+
+ i.ParamRef {
+ }
+
+ i.subtitle {
+ }
+
+ ul.TypeMembersIndex {
+ text-align: left;
+ background: #F8F8F8;
+ }
+
+ ul.TypeMembersIndex li {
+ display: inline;
+ margin: 0.5em;
+ }
+
+ table.HeaderTable {
+ }
+
+ table.SignatureTable {
+ }
+
+ table.Documentation, table.Enumeration, table.TypeDocumentation {
+ border-collapse: collapse;
+ width: 100%;
+ }
+
+ table.Documentation tr th, table.TypeMembers tr th, table.Enumeration tr th, table.TypeDocumentation tr th {
+ background: whitesmoke;
+ padding: 0.8em;
+ border: 1px solid gray;
+ text-align: left;
+ vertical-align: bottom;
+ }
+
+ table.Documentation tr td, table.TypeMembers tr td, table.Enumeration tr td, table.TypeDocumentation tr td {
+ padding: 0.5em;
+ border: 1px solid gray;
+ text-align: left;
+ vertical-align: top;
+ }
+
+ table.TypeMembers {
+ border: 1px solid #C0C0C0;
+ width: 100%;
+ }
+
+ table.TypeMembers tr td {
+ background: #F8F8F8;
+ border: white;
+ }
+
+ table.Documentation {
+ }
+
+ table.TypeMembers {
+ }
+
+ div.CodeExample {
+ width: 100%;
+ border: 1px solid #DDDDDD;
+ background-color: #F8F8F8;
+ }
+
+ div.CodeExample p {
+ margin: 0.5em;
+ border-bottom: 1px solid #DDDDDD;
+ }
+
+ div.CodeExample div {
+ margin: 0.5em;
+ }
+
+ h4 {
+ margin-bottom: 0;
+ }
+
+ div.Signature {
+ border: 1px solid #C0C0C0;
+ background: #F2F2F2;
+ padding: 1em;
+ }
+ </style>
+ <script type="text/JavaScript">
+ function toggle_display (block) {
+ var w = document.getElementById (block);
+ var t = document.getElementById (block + ":toggle");
+ if (w.style.display == "none") {
+ w.style.display = "block";
+ t.innerHTML = "⊟";
+ } else {
+ w.style.display = "none";
+ t.innerHTML = "⊞";
+ }
+ }
+ </script>
+ </head>
+ <body>
+ <div class="CollectionTitle">
+ <a href="../index.html">DocTest</a> : <a href="index.html">Mono.DocTest.Generic Namespace</a></div>
+ <div class="SideBar">
+ <p>
+ <a href="#T:Mono.DocTest.Generic.CompoundConstraints`1">Overview</a>
+ </p>
+ <p>
+ <a href="#T:Mono.DocTest.Generic.CompoundConstraints`1:Signature">Signature</a>
+ </p>
+ <p>
+ <a href="#T:Mono.DocTest.Generic.CompoundConstraints`1:Docs">Remarks</a>
+ </p>
+ <p>
+ <a href="#Members">Members</a>
+ </p>
+ <p>
+ <a href="#T:Mono.DocTest.Generic.CompoundConstraints`1:Members">Member Details</a>
+ </p>
+ </div>
+ <h1 class="PageTitle" id="T:Mono.DocTest.Generic.CompoundConstraints`1">CompoundConstraints&lt;NGparam&gt; Generic Class</h1>
+ <p class="Summary" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Summary">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </p>
+ <div>
+ <h2>Syntax</h2>
+ <div class="Signature" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Signature">public class <b>CompoundConstraints&lt;NGparam&gt;</b><br /> where NGparam : classnew()</div>
+ </div>
+ <div class="Remarks" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Docs">
+ <h4 class="Subsection">Type Parameters</h4>
+ <blockquote class="SubsectionBox" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Docs:Type Parameters">
+ <dl>
+ <dt>
+ <i>NGparam</i>
+ </dt>
+ <dd>
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </dd>
+ </dl>
+ </blockquote>
+ <h2 class="Section">Remarks</h2>
+ <div class="SectionBox" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Docs:Remarks">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </div>
+ <h2 class="Section">Requirements</h2>
+ <div class="SectionBox" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Docs:Version Information">
+ <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
+ <h2 class="Section" id="Members">Members</h2>
+ <div class="SectionBox" id="_Members">
+ <p>
+ See Also: Inherited members from
+ <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Object">object</a>.
+ </p>
+ <h2 class="Section">Public Constructors</h2>
+ <div class="SectionBox" id="Public Constructors">
+ <div class="SubsectionBox">
+ <table class="TypeMembers">
+ <tr valign="top">
+ <td>
+ <div>
+ </div>
+ </td>
+ <td>
+ <div>
+ <b>
+ <a href="#C:Mono.DocTest.Generic.CompoundConstraints`1()">CompoundConstraints</a>
+ </b>()</div>
+ </td>
+ <td>
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <h2 class="Section">Public Methods</h2>
+ <div class="SectionBox" id="Public Methods">
+ <div class="SubsectionBox">
+ <table class="TypeMembers">
+ <tr valign="top">
+ <td>
+ <div>static </div>
+ </td>
+ <td colspan="2">
+ <b>
+ <a href="#M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1()">CompoundConstraintClass&lt;param&gt;</a>
+ </b>()<blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <h2 class="Section">Extension Methods</h2>
+ <div class="SectionBox" id="Extension Methods">
+ <div class="SubsectionBox">
+ <table class="TypeMembers">
+ <tr valign="top">
+ <td>
+ <div>static </div>
+ </td>
+ <td colspan="2">
+ <b>
+ <a href="../Mono.DocTest.Generic/Extensions.html#M:Mono.DocTest.Generic.Extensions.ToEnumerable``1(``0)">ToEnumerable&lt;T&gt;</a>
+ </b>(<i>this</i> <i title="To be added.">T</i>)<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerable`1">IEnumerable&lt;T&gt;</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="Members" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Members">
+ <h2 class="Section" id="MemberDetails">Member Details</h2>
+ <div class="SectionBox" id="_MemberDetails">
+ <h3 id="C:Mono.DocTest.Generic.CompoundConstraints`1()">CompoundConstraints Constructor</h3>
+ <blockquote id="C:Mono.DocTest.Generic.CompoundConstraints`1():member">
+ <div class="msummary">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </div>
+ <h2>Syntax</h2>
+ <div class="Signature">public <b>CompoundConstraints</b> ()</div>
+ <h2 class="Section">Remarks</h2>
+ <div class="SectionBox" id="C:Mono.DocTest.Generic.CompoundConstraints`1():Remarks">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </div>
+ <h2 class="Section">Requirements</h2>
+ <div class="SectionBox" id="C:Mono.DocTest.Generic.CompoundConstraints`1():Version Information">
+ <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
+ <hr size="1" />
+ </blockquote>
+ <h3 id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1()">CompoundConstraintClass&lt;param&gt; Generic Method</h3>
+ <blockquote id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1():member">
+ <div class="msummary">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </div>
+ <h2>Syntax</h2>
+ <div class="Signature">public static <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>CompoundConstraintClass&lt;param&gt;</b> ()<br /> where param : classnew()</div>
+ <h4 class="Subsection">Type Parameters</h4>
+ <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1():Type Parameters">
+ <dl>
+ <dt>
+ <i>param</i>
+ </dt>
+ <dd>
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </dd>
+ </dl>
+ </blockquote>
+ <h2 class="Section">Remarks</h2>
+ <div class="SectionBox" id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1():Remarks">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </div>
+ <h2 class="Section">Requirements</h2>
+ <div class="SectionBox" id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1():Version Information">
+ <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
+ <hr size="1" />
+ </blockquote>
+ </div>
+ </div>
+ <hr size="1" />
+ <div class="Copyright">
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/mdoc/Test/html.expected-with-array-extension/Mono.DocTest.Generic/index.html b/mdoc/Test/html.expected-with-array-extension/Mono.DocTest.Generic/index.html
index d82db15a..c88f29b3 100644
--- a/mdoc/Test/html.expected-with-array-extension/Mono.DocTest.Generic/index.html
+++ b/mdoc/Test/html.expected-with-array-extension/Mono.DocTest.Generic/index.html
@@ -206,6 +206,14 @@
</tr>
<tr valign="top">
<td>
+ <a href="./CompoundConstraints`1.html">CompoundConstraints&lt;NGparam&gt;</a>
+ </td>
+ <td>
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>
<a href="./Extensions.html">Extensions</a>
</td>
<td>
diff --git a/mdoc/Test/html.expected-with-array-extension/index.html b/mdoc/Test/html.expected-with-array-extension/index.html
index fb1fea18..6622efe8 100644
--- a/mdoc/Test/html.expected-with-array-extension/index.html
+++ b/mdoc/Test/html.expected-with-array-extension/index.html
@@ -360,6 +360,14 @@
</tr>
<tr valign="top">
<td>
+ <a href="Mono.DocTest.Generic/CompoundConstraints`1.html">CompoundConstraints&lt;NGparam&gt;</a>
+ </td>
+ <td>
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>
<a href="Mono.DocTest.Generic/Extensions.html">Extensions</a>
</td>
<td>
diff --git a/mdoc/Test/html.expected/Mono.DocTest.Generic/CompoundConstraints`1.html b/mdoc/Test/html.expected/Mono.DocTest.Generic/CompoundConstraints`1.html
new file mode 100644
index 00000000..773741fc
--- /dev/null
+++ b/mdoc/Test/html.expected/Mono.DocTest.Generic/CompoundConstraints`1.html
@@ -0,0 +1,346 @@
+<html>
+ <head>
+ <title>Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <style>
+ a { text-decoration: none }
+
+ div.SideBar {
+ padding-left: 1em;
+ padding-right: 1em;
+ right: 0;
+ float: right;
+ border: thin solid black;
+ background-color: #f2f2f2;
+ }
+
+ .CollectionTitle { font-weight: bold }
+ .PageTitle { font-size: 150%; font-weight: bold }
+
+ .Summary { }
+ .Signature { }
+ .Remarks { }
+ .Members { }
+ .Copyright { }
+
+ .Section { font-size: 125%; font-weight: bold }
+ p.Summary {
+ margin-left: 1em;
+ }
+ .SectionBox { margin-left: 2em }
+ .NamespaceName { font-size: 105%; font-weight: bold }
+ .NamespaceSumary { }
+ .MemberName { font-size: 115%; font-weight: bold; margin-top: 1em }
+ .Subsection { font-size: 105%; font-weight: bold }
+ .SubsectionBox { margin-left: 2em; margin-bottom: 1em }
+
+ .CodeExampleTable { background-color: #f5f5dd; border: thin solid black; padding: .25em; }
+
+ .TypesListing {
+ border-collapse: collapse;
+ }
+
+ td {
+ vertical-align: top;
+ }
+ th {
+ text-align: left;
+ }
+
+ .TypesListing td {
+ margin: 0px;
+ padding: .25em;
+ border: solid gray 1px;
+ }
+
+ .TypesListing th {
+ margin: 0px;
+ padding: .25em;
+ background-color: #f2f2f2;
+ border: solid gray 1px;
+ }
+
+ div.Footer {
+ border-top: 1px solid gray;
+ margin-top: 1.5em;
+ padding-top: 0.6em;
+ text-align: center;
+ color: gray;
+ }
+
+ span.NotEntered /* Documentation for this section has not yet been entered */ {
+ font-style: italic;
+ color: red;
+ }
+
+ div.Header {
+ background: #B0C4DE;
+ border: double;
+ border-color: white;
+ border-width: 7px;
+ padding: 0.5em;
+ }
+
+ div.Header * {
+ font-size: smaller;
+ }
+
+ div.Note {
+ }
+
+ i.ParamRef {
+ }
+
+ i.subtitle {
+ }
+
+ ul.TypeMembersIndex {
+ text-align: left;
+ background: #F8F8F8;
+ }
+
+ ul.TypeMembersIndex li {
+ display: inline;
+ margin: 0.5em;
+ }
+
+ table.HeaderTable {
+ }
+
+ table.SignatureTable {
+ }
+
+ table.Documentation, table.Enumeration, table.TypeDocumentation {
+ border-collapse: collapse;
+ width: 100%;
+ }
+
+ table.Documentation tr th, table.TypeMembers tr th, table.Enumeration tr th, table.TypeDocumentation tr th {
+ background: whitesmoke;
+ padding: 0.8em;
+ border: 1px solid gray;
+ text-align: left;
+ vertical-align: bottom;
+ }
+
+ table.Documentation tr td, table.TypeMembers tr td, table.Enumeration tr td, table.TypeDocumentation tr td {
+ padding: 0.5em;
+ border: 1px solid gray;
+ text-align: left;
+ vertical-align: top;
+ }
+
+ table.TypeMembers {
+ border: 1px solid #C0C0C0;
+ width: 100%;
+ }
+
+ table.TypeMembers tr td {
+ background: #F8F8F8;
+ border: white;
+ }
+
+ table.Documentation {
+ }
+
+ table.TypeMembers {
+ }
+
+ div.CodeExample {
+ width: 100%;
+ border: 1px solid #DDDDDD;
+ background-color: #F8F8F8;
+ }
+
+ div.CodeExample p {
+ margin: 0.5em;
+ border-bottom: 1px solid #DDDDDD;
+ }
+
+ div.CodeExample div {
+ margin: 0.5em;
+ }
+
+ h4 {
+ margin-bottom: 0;
+ }
+
+ div.Signature {
+ border: 1px solid #C0C0C0;
+ background: #F2F2F2;
+ padding: 1em;
+ }
+ </style>
+ <script type="text/JavaScript">
+ function toggle_display (block) {
+ var w = document.getElementById (block);
+ var t = document.getElementById (block + ":toggle");
+ if (w.style.display == "none") {
+ w.style.display = "block";
+ t.innerHTML = "⊟";
+ } else {
+ w.style.display = "none";
+ t.innerHTML = "⊞";
+ }
+ }
+ </script>
+ </head>
+ <body>
+ <div class="CollectionTitle">
+ <a href="../index.html">DocTest</a> : <a href="index.html">Mono.DocTest.Generic Namespace</a></div>
+ <div class="SideBar">
+ <p>
+ <a href="#T:Mono.DocTest.Generic.CompoundConstraints`1">Overview</a>
+ </p>
+ <p>
+ <a href="#T:Mono.DocTest.Generic.CompoundConstraints`1:Signature">Signature</a>
+ </p>
+ <p>
+ <a href="#T:Mono.DocTest.Generic.CompoundConstraints`1:Docs">Remarks</a>
+ </p>
+ <p>
+ <a href="#Members">Members</a>
+ </p>
+ <p>
+ <a href="#T:Mono.DocTest.Generic.CompoundConstraints`1:Members">Member Details</a>
+ </p>
+ </div>
+ <h1 class="PageTitle" id="T:Mono.DocTest.Generic.CompoundConstraints`1">CompoundConstraints&lt;NGparam&gt; Generic Class</h1>
+ <p class="Summary" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Summary">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </p>
+ <div>
+ <h2>Syntax</h2>
+ <div class="Signature" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Signature">public class <b>CompoundConstraints&lt;NGparam&gt;</b><br /> where NGparam : classnew()</div>
+ </div>
+ <div class="Remarks" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Docs">
+ <h4 class="Subsection">Type Parameters</h4>
+ <blockquote class="SubsectionBox" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Docs:Type Parameters">
+ <dl>
+ <dt>
+ <i>NGparam</i>
+ </dt>
+ <dd>Non-generic param</dd>
+ </dl>
+ </blockquote>
+ <h2 class="Section">Remarks</h2>
+ <div class="SectionBox" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Docs:Remarks">
+ <tt>T:Mono.DocTest.CompoundConstraints</tt>.</div>
+ <h2 class="Section">Requirements</h2>
+ <div class="SectionBox" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Docs:Version Information">
+ <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
+ <h2 class="Section" id="Members">Members</h2>
+ <div class="SectionBox" id="_Members">
+ <p>
+ See Also: Inherited members from
+ <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Object">object</a>.
+ </p>
+ <h2 class="Section">Public Constructors</h2>
+ <div class="SectionBox" id="Public Constructors">
+ <div class="SubsectionBox">
+ <table class="TypeMembers">
+ <tr valign="top">
+ <td>
+ <div>
+ </div>
+ </td>
+ <td>
+ <div>
+ <b>
+ <a href="#C:Mono.DocTest.Generic.CompoundConstraints`1()">CompoundConstraints</a>
+ </b>()</div>
+ </td>
+ <td>
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <h2 class="Section">Public Methods</h2>
+ <div class="SectionBox" id="Public Methods">
+ <div class="SubsectionBox">
+ <table class="TypeMembers">
+ <tr valign="top">
+ <td>
+ <div>static </div>
+ </td>
+ <td colspan="2">
+ <b>
+ <a href="#M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1()">CompoundConstraintClass&lt;param&gt;</a>
+ </b>()<blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <h2 class="Section">Extension Methods</h2>
+ <div class="SectionBox" id="Extension Methods">
+ <div class="SubsectionBox">
+ <table class="TypeMembers">
+ <tr valign="top">
+ <td>
+ <div>static </div>
+ </td>
+ <td colspan="2">
+ <b>
+ <a href="../Mono.DocTest.Generic/Extensions.html#M:Mono.DocTest.Generic.Extensions.ToEnumerable``1(``0)">ToEnumerable&lt;T&gt;</a>
+ </b>(<i>this</i> <i title="To be added.">T</i>)<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerable`1">IEnumerable&lt;T&gt;</a></nobr><blockquote><tt>System.Object</tt> extension method</blockquote></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="Members" id="T:Mono.DocTest.Generic.CompoundConstraints`1:Members">
+ <h2 class="Section" id="MemberDetails">Member Details</h2>
+ <div class="SectionBox" id="_MemberDetails">
+ <h3 id="C:Mono.DocTest.Generic.CompoundConstraints`1()">CompoundConstraints Constructor</h3>
+ <blockquote id="C:Mono.DocTest.Generic.CompoundConstraints`1():member">
+ <div class="msummary">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </div>
+ <h2>Syntax</h2>
+ <div class="Signature">public <b>CompoundConstraints</b> ()</div>
+ <h2 class="Section">Remarks</h2>
+ <div class="SectionBox" id="C:Mono.DocTest.Generic.CompoundConstraints`1():Remarks">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </div>
+ <h2 class="Section">Requirements</h2>
+ <div class="SectionBox" id="C:Mono.DocTest.Generic.CompoundConstraints`1():Version Information">
+ <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
+ <hr size="1" />
+ </blockquote>
+ <h3 id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1()">CompoundConstraintClass&lt;param&gt; Generic Method</h3>
+ <blockquote id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1():member">
+ <div class="msummary">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </div>
+ <h2>Syntax</h2>
+ <div class="Signature">public static <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>CompoundConstraintClass&lt;param&gt;</b> ()<br /> where param : classnew()</div>
+ <h4 class="Subsection">Type Parameters</h4>
+ <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1():Type Parameters">
+ <dl>
+ <dt>
+ <i>param</i>
+ </dt>
+ <dd>
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </dd>
+ </dl>
+ </blockquote>
+ <h2 class="Section">Remarks</h2>
+ <div class="SectionBox" id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1():Remarks">
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </div>
+ <h2 class="Section">Requirements</h2>
+ <div class="SectionBox" id="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1():Version Information">
+ <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
+ <hr size="1" />
+ </blockquote>
+ </div>
+ </div>
+ <hr size="1" />
+ <div class="Copyright">
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/mdoc/Test/html.expected/Mono.DocTest.Generic/index.html b/mdoc/Test/html.expected/Mono.DocTest.Generic/index.html
index ccd15a27..261c32c9 100644
--- a/mdoc/Test/html.expected/Mono.DocTest.Generic/index.html
+++ b/mdoc/Test/html.expected/Mono.DocTest.Generic/index.html
@@ -206,6 +206,14 @@
</tr>
<tr valign="top">
<td>
+ <a href="./CompoundConstraints`1.html">CompoundConstraints&lt;NGparam&gt;</a>
+ </td>
+ <td>
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>
<a href="./Extensions.html">Extensions</a>
</td>
<td>extension methods!</td>
diff --git a/mdoc/Test/html.expected/index.html b/mdoc/Test/html.expected/index.html
index d521e764..487289b4 100644
--- a/mdoc/Test/html.expected/index.html
+++ b/mdoc/Test/html.expected/index.html
@@ -352,6 +352,14 @@
</tr>
<tr valign="top">
<td>
+ <a href="Mono.DocTest.Generic/CompoundConstraints`1.html">CompoundConstraints&lt;NGparam&gt;</a>
+ </td>
+ <td>
+ <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>
<a href="Mono.DocTest.Generic/Extensions.html">Extensions</a>
</td>
<td>extension methods!</td>
diff --git a/mdoc/Test/msxdoc-expected.importslashdoc.xml b/mdoc/Test/msxdoc-expected.importslashdoc.xml
index 42f2bb1a..2b1faff4 100644
--- a/mdoc/Test/msxdoc-expected.importslashdoc.xml
+++ b/mdoc/Test/msxdoc-expected.importslashdoc.xml
@@ -591,6 +591,21 @@ class Example {
<summary>To be added.</summary>
<remarks>To be added.</remarks>
</member>
+ <member name="T:Mono.DocTest.Generic.CompoundConstraints`1">
+ <typeparam name="NGparam">Non-generic param</typeparam>
+ <summary>To be added.</summary>
+ <remarks>
+ <c>T:Mono.DocTest.CompoundConstraints</c>.</remarks>
+ </member>
+ <member name="C:Mono.DocTest.Generic.CompoundConstraints`1">
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </member>
+ <member name="M:Mono.DocTest.Generic.CompoundConstraints`1.CompoundConstraintClass``1">
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </member>
<member name="T:Mono.DocTest.Generic.Extensions">
<summary>extension methods!</summary>
<remarks>
diff --git a/mdoc/Test/test-multiple-mdoc/en.expected.test.multiple.mdoc/Mono.DocTest.Generic/CompoundConstraints`1.xml b/mdoc/Test/test-multiple-mdoc/en.expected.test.multiple.mdoc/Mono.DocTest.Generic/CompoundConstraints`1.xml
new file mode 100644
index 00000000..f9ba1b6c
--- /dev/null
+++ b/mdoc/Test/test-multiple-mdoc/en.expected.test.multiple.mdoc/Mono.DocTest.Generic/CompoundConstraints`1.xml
@@ -0,0 +1,66 @@
+<Type Name="CompoundConstraints&lt;NGparam&gt;" FullName="Mono.DocTest.Generic.CompoundConstraints&lt;NGparam&gt;">
+ <TypeSignature Language="C#" Value="public class CompoundConstraints&lt;NGparam&gt; where NGparam : class, new()" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit CompoundConstraints`1&lt;class .ctor NGparam&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="NGparam">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="NGparam">Non-generic param</typeparam>
+ <summary>To be added.</summary>
+ <remarks>
+ <c>T:Mono.DocTest.CompoundConstraints</c>.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CompoundConstraints ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CompoundConstraintClass&lt;param&gt;">
+ <MemberSignature Language="C#" Value="public static void CompoundConstraintClass&lt;param&gt; () where param : class, new();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void CompoundConstraintClass&lt;class .ctor param&gt;() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="param">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="param">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/test-multiple-mdoc/en.expected.test.multiple.mdoc/index.xml b/mdoc/Test/test-multiple-mdoc/en.expected.test.multiple.mdoc/index.xml
index 82bf818b..da66cdec 100644
--- a/mdoc/Test/test-multiple-mdoc/en.expected.test.multiple.mdoc/index.xml
+++ b/mdoc/Test/test-multiple-mdoc/en.expected.test.multiple.mdoc/index.xml
@@ -35,6 +35,7 @@
<Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
</Namespace>
<Namespace Name="Mono.DocTest.Generic">
+ <Type Name="CompoundConstraints`1" DisplayName="CompoundConstraints&lt;NGparam&gt;" Kind="Class" />
<Type Name="Extensions" Kind="Class" />
<Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
<Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
diff --git a/mdoc/mdoc.Test/AttributeValueFormatterTest.cs b/mdoc/mdoc.Test/AttributeValueFormatterTest.cs
new file mode 100644
index 00000000..78d93872
--- /dev/null
+++ b/mdoc/mdoc.Test/AttributeValueFormatterTest.cs
@@ -0,0 +1,168 @@
+using mdoc.Test.SampleClasses;
+using Mono.Cecil;
+using Mono.Documentation.Updater;
+using Mono.Documentation.Updater.Formatters;
+using NUnit.Framework;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace mdoc.Test
+{
+ [TestFixture()]
+ public class AttributeValueFormatterTest : BasicTests
+ {
+ [TestCase("PropertyTypeType", "typeof(Mono.Cecil.TypeReference)")]
+ [TestCase("PropertyTypeTypeWithNull", "null")]
+ [TestCase("PropertyTypeTypeWithNestedType", "typeof(mdoc.Test.SampleClasses.SomeNestedTypes+NestedClass)")]
+ [TestCase("PropertyTypeTypeWithUnboundCollection", "typeof(System.Collections.Generic.ICollection<>)")]
+ [TestCase("PropertyTypeTypeWithCollectionOfInt", "typeof(System.Collections.Generic.ICollection<System.Int32>)")]
+ [TestCase("PropertyTypeTypeWithUnboundDictionary", "typeof(System.Collections.Generic.IDictionary<,>)")]
+ [TestCase("PropertyTypeTypeWithDictionaryOfInt", "typeof(System.Collections.Generic.IDictionary<System.Int32,System.Int32>)")]
+ [TestCase("PropertyTypeTypeWithUnboundCustomGenericType", "typeof(mdoc.Test.SampleClasses.SomeGenericClass<>)")]
+ [TestCase("PropertyTypeTypeWithCustomGenericTypeOfInt", "typeof(mdoc.Test.SampleClasses.SomeGenericClass<System.Int32>)")]
+ [TestCase("PropertyTypeTypeWithUnboundNestedGenericType", "typeof(mdoc.Test.SampleClasses.SomeNestedTypes+NestedGenericType<>)")]
+ [TestCase("PropertyTypeTypeWithNestedGenericTypeOfInt", "typeof(mdoc.Test.SampleClasses.SomeNestedTypes+NestedGenericType<System.Int32>)")]
+ [TestCase("PropertyTypeTypeWithUnboundInnerNestedGenericType", "typeof(mdoc.Test.SampleClasses.SomeNestedTypes+NestedGenericType<>+InnerNestedGenericType<>)")]
+ [TestCase("PropertyTypeTypeWithInnerNestedGenericTypeOfInt", "typeof(mdoc.Test.SampleClasses.SomeNestedTypes+NestedGenericType<System.String>+InnerNestedGenericType<System.Int32>)")]
+ [TestCase("PropertyBoolType", "true")]
+ [TestCase("PropertySByteType", SByte.MinValue)]
+ [TestCase("PropertyByteType", Byte.MaxValue)]
+ [TestCase("PropertyInt16Type", Int16.MinValue)]
+ [TestCase("PropertyUInt16Type", UInt16.MaxValue)]
+ [TestCase("PropertyInt32Type", Int32.MinValue)]
+ [TestCase("PropertyUInt32Type", UInt32.MaxValue)]
+ [TestCase("PropertyInt64Type", Int64.MinValue)]
+ [TestCase("PropertyUInt64Type", UInt64.MaxValue)]
+ [TestCase("PropertySingleType", Single.MinValue)]
+ [TestCase("PropertyDoubleType", Double.MinValue)]
+ [TestCase("PropertyCharType", "'C'")]
+ [TestCase("PropertyStringType", "\"This is a string argument.\"")]
+ [TestCase("PropertyStringTypeWithEmptyString", "\"\"")]
+ [TestCase("PropertyStringTypeWithNull", "null")]
+ [TestCase("PropertyEnumType", "System.ConsoleColor.Red")]
+ [TestCase("PropertyEnumTypeWithUnknownValue", "(System.ConsoleColor) 2147483647")]
+ [TestCase("PropertyNestedEnumType", "mdoc.Test.SampleClasses.SomeNestedTypes+NestedEnum.Read")]
+ [TestCase("PropertyNestedEnumTypeWithUnknownValue", "(mdoc.Test.SampleClasses.SomeNestedTypes+NestedEnum) 2147483647")]
+ [TestCase("PropertyFlagsEnumType", "System.AttributeTargets.Class | System.AttributeTargets.Enum")]
+ [TestCase("PropertyFlagsEnumTypeWithAllValue", "System.AttributeTargets.All")]
+ [TestCase("PropertyFlagsEnumTypeWithUndefineValueZero", "(System.AttributeTargets) 0")]
+ [TestCase("PropertyDuplicateFlagsEnumTypeWithCombinationValue", "mdoc.Test.SampleClasses.SomeFlagsEnum.Open | mdoc.Test.SampleClasses.SomeFlagsEnum.ReadWrite")]
+ [TestCase("PropertyNestedFlagsEnumType", "mdoc.Test.SampleClasses.SomeNestedTypes+NestedFlagsEnum.Class | mdoc.Test.SampleClasses.SomeNestedTypes+NestedFlagsEnum.Enum")]
+ [TestCase("PropertyNestedFlagsEnumTypeWithUndefineValueZero", "(mdoc.Test.SampleClasses.SomeNestedTypes+NestedFlagsEnum) 0")]
+ [TestCase("PropertyFlagsEnumTypeWithNotApplyAttributeValidTypeAndCombinationValue", "mdoc.Test.SampleClasses.NotApplyAttributeValidFlagsEnum.Class | mdoc.Test.SampleClasses.NotApplyAttributeValidFlagsEnum.Enum")]
+ [TestCase("PropertyFlagsEnumTypeWithNotApplyAttributeValidTypeAndSingleValue", "mdoc.Test.SampleClasses.NotApplyAttributeValidFlagsEnum.Class")]
+ [TestCase("PropertyFlagsEnumTypeWithNotApplyAttributeInvalidTypeAndUnknownCombinationValue", "(mdoc.Test.SampleClasses.NotApplyAttributeInvalidFlagsEnum) 5")]
+ [TestCase("PropertyFlagsEnumTypeWithApplePlatformType", "Platform.Mac_10_8 | Platform.Mac_Arch64")]
+ [TestCase("PropertyFlagsEnumTypeWithApplePlatformAndNoneValue", "ObjCRuntime.Platform.None")]
+ [TestCase("PropertyArrayOfIntType", "new System.Int32[] { 0, 0, 7 }")]
+ [TestCase("PropertyArrayOfIntTypeWithNull", "null")]
+ [TestCase("PropertyObjectWithNull", "null")]
+ [TestCase("PropertyObjectWithTypeType", "typeof(Mono.Cecil.TypeReference)")]
+ [TestCase("PropertyObjectWithNestedTypeType", "typeof(mdoc.Test.SampleClasses.SomeNestedTypes+NestedClass)")]
+ [TestCase("PropertyObjectWithUnboundCollectionType", "typeof(System.Collections.Generic.ICollection<>)")]
+ [TestCase("PropertyObjectWithCollectionTypeOfInt", "typeof(System.Collections.Generic.ICollection<System.Int32>)")]
+ [TestCase("PropertyObjectWithUnboundDictionaryType", "typeof(System.Collections.Generic.IDictionary<,>)")]
+ [TestCase("PropertyObjectWithDictionaryTypeOfInt", "typeof(System.Collections.Generic.IDictionary<System.Int32,System.Int32>)")]
+ [TestCase("PropertyObjectWithUnboundCustomGenericType", "typeof(mdoc.Test.SampleClasses.SomeGenericClass<>)")]
+ [TestCase("PropertyObjectWithCustomGenericTypeOfInt", "typeof(mdoc.Test.SampleClasses.SomeGenericClass<System.Int32>)")]
+ [TestCase("PropertyObjectWithUnboundNestedGenericType", "typeof(mdoc.Test.SampleClasses.SomeNestedTypes+NestedGenericType<>)")]
+ [TestCase("PropertyObjectWithNestedGenericTypeOfInt", "typeof(mdoc.Test.SampleClasses.SomeNestedTypes+NestedGenericType<System.Int32>)")]
+ [TestCase("PropertyObjectWithUnboundInnerNestedGenericType", "typeof(mdoc.Test.SampleClasses.SomeNestedTypes+NestedGenericType<>+InnerNestedGenericType<>)")]
+ [TestCase("PropertyObjectWithInnerNestedGenericTypeOfInt", "typeof(mdoc.Test.SampleClasses.SomeNestedTypes+NestedGenericType<System.String>+InnerNestedGenericType<System.Int32>)")]
+ [TestCase("PropertyObjectWithBoolType", "true")]
+ [TestCase("PropertyObjectWithSByteType", SByte.MinValue)]
+ [TestCase("PropertyObjectWithByteType", Byte.MaxValue)]
+ [TestCase("PropertyObjectWithInt16Type", Int16.MinValue)]
+ [TestCase("PropertyObjectWithUInt16Type", UInt16.MaxValue)]
+ [TestCase("PropertyObjectWithInt32Type", Int32.MinValue)]
+ [TestCase("PropertyObjectWithUInt32Type", UInt32.MaxValue)]
+ [TestCase("PropertyObjectWithInt64Type", Int64.MinValue)]
+ [TestCase("PropertyObjectWithUInt64Type", UInt64.MaxValue)]
+ [TestCase("PropertyObjectWithSingleType", Single.MinValue)]
+ [TestCase("PropertyObjectWithDoubleType", Double.MinValue)]
+ [TestCase("PropertyObjectWithCharType", "'C'")]
+ [TestCase("PropertyObjectWithStringType", "\"This is a string argument.\"")]
+ [TestCase("PropertyObjectWithStringTypeAndEmptyString", "\"\"")]
+ [TestCase("PropertyObjectWithEnumType", "System.ConsoleColor.Red")]
+ [TestCase("PropertyObjectWithEnumTypeAndUnknownValue", "(System.ConsoleColor) 2147483647")]
+ [TestCase("PropertyObjectWithNestedEnumType", "mdoc.Test.SampleClasses.SomeNestedTypes+NestedEnum.Read")]
+ [TestCase("PropertyObjectWithNestedEnumTypeAndUnknownValue", "(mdoc.Test.SampleClasses.SomeNestedTypes+NestedEnum) 2147483647")]
+ [TestCase("PropertyObjectWithFlagsEnumType", "System.AttributeTargets.Class | System.AttributeTargets.Enum")]
+ [TestCase("PropertyObjectWithFlagsEnumTypeAndAllValue", "System.AttributeTargets.All")]
+ [TestCase("PropertyObjectWithFlagsEnumTypeAndUndefineValueZero", "(System.AttributeTargets) 0")]
+ [TestCase("PropertyObjectWithDuplicateFlagsEnumTypeAndCombinationValue", "mdoc.Test.SampleClasses.SomeFlagsEnum.Open | mdoc.Test.SampleClasses.SomeFlagsEnum.ReadWrite")]
+ [TestCase("PropertyObjectWithNestedFlagsEnumType", "mdoc.Test.SampleClasses.SomeNestedTypes+NestedFlagsEnum.Class | mdoc.Test.SampleClasses.SomeNestedTypes+NestedFlagsEnum.Enum")]
+ [TestCase("PropertyObjectWithNestedFlagsEnumTypeAndUndefineValueZero", "(mdoc.Test.SampleClasses.SomeNestedTypes+NestedFlagsEnum) 0")]
+ [TestCase("PropertyObjectWithNotApplyAttributeValidFlagsEnumTypeAndCombinationValue", "mdoc.Test.SampleClasses.NotApplyAttributeValidFlagsEnum.Class | mdoc.Test.SampleClasses.NotApplyAttributeValidFlagsEnum.Enum")]
+ [TestCase("PropertyObjectWithNotApplyAttributeValidFlagsEnumTypeAndSingleValue", "mdoc.Test.SampleClasses.NotApplyAttributeValidFlagsEnum.Class")]
+ [TestCase("PropertyObjectWithNotApplyAttributeInvalidFlagsEnumTypeAndUnknownCombinationValue", "(mdoc.Test.SampleClasses.NotApplyAttributeInvalidFlagsEnum) 5")]
+ [TestCase("PropertyObjectWithApplePlatformFlagsEnumType", "Platform.Mac_10_8 | Platform.Mac_Arch64")]
+ [TestCase("PropertyObjectWithApplePlatformFlagsEnumTypeAndNoneValue", "ObjCRuntime.Platform.None")]
+ [TestCase("PropertyObjectWithArrayOfIntType", "new System.Int32[] { 0, 0, 7 }")]
+ public void TestFormatValueWithDifferentTypes(string methodName, object argumentValue)
+ {
+ TestAttributeValueFormatter(typeof(SomeAttribute), methodName, argumentValue);
+ }
+
+ [TestCase("GetEnumerator", "typeof(mdoc.Test.SampleClasses.SomeIteratorStateMachine<,>+<GetEnumerator>d__0)", typeof(SomeIteratorStateMachine<,>))]
+ [TestCase("GetEnumerator", "typeof(mdoc.Test.SampleClasses.SomeIteratorStateMachine<,>+SomeNestedIteratorStateMachine<,>+<GetEnumerator>d__0)", typeof(SomeIteratorStateMachine<,>.SomeNestedIteratorStateMachine<,>))]
+ [TestCase("WithParameterType", "typeof(mdoc.Test.SampleClasses.SomeIteratorStateMachine<,>+<WithParameterType>d__2<,>)", typeof(SomeIteratorStateMachine<,>))]
+ [TestCase("WithParameterType", "typeof(mdoc.Test.SampleClasses.SomeIteratorStateMachine<,>+SomeNestedIteratorStateMachine<,>+<WithParameterType>d__2<,>)", typeof(SomeIteratorStateMachine<,>.SomeNestedIteratorStateMachine<,>))]
+ public void TestFormartValueWithIteratorStateMachineAttribute(string methodName, object argumentValue, Type type)
+ {
+ TestAttributeValueFormatter(type, methodName, argumentValue);
+ }
+
+ private void TestAttributeValueFormatter(Type type, string memberName, object expectedValue)
+ {
+ var (argumentType, argumentValue) = GetAttributeArguments(type, memberName);
+
+ var attributeFormatter = new AttributeValueFormatter();
+ var formatValue = attributeFormatter.Format(argumentType, argumentValue);
+
+ Assert.AreEqual(expectedValue.ToString(), formatValue);
+ }
+
+ private (TypeReference argumentType, object argumentValue) GetAttributeArguments(Type type, string memberName)
+ {
+ var methodDefinition = GetMethod(type, memberName);
+ var methodAttribute = AttributeFormatter.GetCustomAttributes(methodDefinition).First();
+ CustomAttribute customAttribute = methodAttribute.Item1;
+
+ var customAttributeList = new List<(TypeReference, object)>();
+ for (int i = 0; i < customAttribute.ConstructorArguments.Count; ++i)
+ {
+ customAttributeList.Add((customAttribute.ConstructorArguments[i].Type, customAttribute.ConstructorArguments[i].Value));
+ }
+
+ foreach (var item in GetAttributeArgumentsFromFieldsAndProperties(customAttribute))
+ {
+ customAttributeList.Add((item.argumentType, item.argumentValue));
+ }
+
+ return customAttributeList.First();
+ }
+
+ private IEnumerable<(string argumentName, TypeReference argumentType, object argumentValue)> GetAttributeArgumentsFromFieldsAndProperties(CustomAttribute customAttribute)
+ {
+ return (from namedArg in customAttribute.Fields
+ select (namedArg.Name, namedArg.Argument.Type, namedArg.Argument.Value))
+ .Concat(from namedArg in customAttribute.Properties
+ select (namedArg.Name, namedArg.Argument.Type, namedArg.Argument.Value))
+ .OrderBy(v => v.Name);
+ }
+
+ protected override TypeDefinition GetType(Type type)
+ {
+ var moduleName = type.Module.FullyQualifiedName;
+ return GetType(moduleName, ConvertNestedTypeFullName(type.FullName));
+ }
+
+ private string ConvertNestedTypeFullName(string fullName)
+ {
+ // Simply of implementation for help nested class convert the full name from .NET style to mono.cecil style.
+ return fullName.Replace("+", "/");
+ }
+ }
+}
diff --git a/mdoc/mdoc.Test/CppCxFormatterMembersTests.cs b/mdoc/mdoc.Test/CppCxFormatterMembersTests.cs
index 14500934..c41cb572 100644
--- a/mdoc/mdoc.Test/CppCxFormatterMembersTests.cs
+++ b/mdoc/mdoc.Test/CppCxFormatterMembersTests.cs
@@ -1,4 +1,5 @@
-using Mono.Documentation.Updater.Formatters.CppFormatters;
+using mdoc.Test.SampleClasses;
+using Mono.Documentation.Updater.Formatters.CppFormatters;
using Mono_DocTest;
using NUnit.Framework;
using Cpp = Mono_DocTest_Generic;
@@ -11,6 +12,7 @@ namespace mdoc.Test
{
protected override CppCxFullMemberFormatter formatter { get; } = new CppCxFullMemberFormatter();
+ private string _cppWinRtTestLibName = "../../../../external/Windows/Windows.Foundation.UniversalApiContract.winmd";
private const string CppCxTestLibName = "../../../../external/Test/UwpTestWinRtComponentCpp.winmd";
private const string CSharpTestLib = "../../../../external/Test/CSharpExample.dll";
@@ -44,6 +46,24 @@ namespace mdoc.Test
[Test]
[Category("Method")]
+ public void Method_CreateNewGuid()
+ {
+ var member = GetMethod(typeof(GuidClass), m => m.Name == "CreateNewGuid");
+ var sig = formatter.GetDeclaration(member);
+ Assert.AreEqual("public:\n static Platform::Guid CreateNewGuid();", sig);
+ }
+
+ [Test]
+ [Category("Method")]
+ public void Method_ObjectIndentical()
+ {
+ var member = GetMethod(typeof(GuidClass), m => m.Name == "ObjectIndentical");
+ var sig = formatter.GetDeclaration(member);
+ Assert.AreEqual("public:\n bool ObjectIndentical(Platform::Guid objGuid1, Platform::Guid objGuid2);", sig);
+ }
+
+ [Test]
+ [Category("Method")]
public void Method_WinRtTypeInterfaceImplementation()
{
TestMethodSignature(CppCxTestLibName, "Namespace222.App", "SetWindow",
@@ -75,6 +95,13 @@ namespace mdoc.Test
[Test]
[Category("Field")]
+ public void Field_WinRtNumericsPlaneNormal()
+ {
+ TestFieldSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Plane", "Normal", "public: float3 Normal;");
+ }
+
+ [Test]
+ [Category("Field")]
public void Field_ValueType_String()
{
TestFieldSignature(CppCxTestLibName, "Namespace2.Class4", "StringField", "public: Platform::String ^ StringField;");
@@ -90,6 +117,21 @@ namespace mdoc.Test
[Test]
[Category("Properties")]
+ public void Property_WinRtNumericsActualSize()
+ {
+ TestPropertySignature(_cppWinRtTestLibName, "Windows.UI.Xaml.UIElement", "ActualSize", "public:\n property float2 ActualSize { float2 get(); };");
+ }
+
+ [Test]
+ [Category("Properties")]
+ public void Property_WinRtNumericsTransformMatrix()
+ {
+ TestPropertySignature(_cppWinRtTestLibName, "Windows.UI.Xaml.UIElement", "TransformMatrix",
+ "public:\n property float4x4 TransformMatrix { float4x4 get(); void set(float4x4 value); };");
+ }
+
+ [Test]
+ [Category("Properties")]
public void Property_FundamentalType()
{
TestPropertySignature(CppCxTestLibName, "Namespace2.Class3", "LongProperty", @"public:
diff --git a/mdoc/mdoc.Test/CppCxFormatterTypesTests.cs b/mdoc/mdoc.Test/CppCxFormatterTypesTests.cs
index d8bf6909..2bbd8390 100644
--- a/mdoc/mdoc.Test/CppCxFormatterTypesTests.cs
+++ b/mdoc/mdoc.Test/CppCxFormatterTypesTests.cs
@@ -13,6 +13,7 @@ namespace mdoc.Test
{
protected override CppCxMemberFormatter formatter => new CppCxMemberFormatter();
+ private string _cppWinRtTestLibName = "../../../../external/Windows/Windows.Foundation.UniversalApiContract.winmd";
private string _cppCxTestLibName = "../../../../external/Test/UwpTestWinRtComponentCpp.winmd";
protected override TypeDefinition GetType(Type type)
@@ -85,9 +86,74 @@ namespace mdoc.Test
TestTypeSignature(_cppCxTestLibName, "Namespace2.Class4", "public value class Class4");
}
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsMatrix3x2()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Matrix3x2", "public value class float3x2");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsMatrix4x4()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Matrix4x4", "public value class float4x4");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsQuaternion()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Quaternion", "public value class quaternion");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsVector2()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Vector2", "public value class float2");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsVector3()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Vector3", "public value class float3");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsVector4()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Vector4", "public value class float4");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_ValueGuid()
+ {
+ TestTypeSignature(typeof(Guid),
+ "public value class Platform::Guid : IComparable, IComparable<Platform::Guid>, IEquatable<Platform::Guid>, IFormattable");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_ValueSingle()
+ {
+ TestTypeSignature(typeof(Single),
+ "public value class float : IComparable, IComparable<float>, IConvertible, IEquatable<float>, IFormattable");
+ }
+
#region NoSupport
[Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsPlane()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Plane", null);
+ }
+
+ [Test]
[Category("NoSupport")]
public void NoSupport_GenericDelegate()
{
diff --git a/mdoc/mdoc.Test/CppFullFormatterTests.cs b/mdoc/mdoc.Test/CppFullFormatterTests.cs
index 9cd417d8..1ad39d43 100644
--- a/mdoc/mdoc.Test/CppFullFormatterTests.cs
+++ b/mdoc/mdoc.Test/CppFullFormatterTests.cs
@@ -240,7 +240,6 @@ generic <typename T>
typeof(MyList1<,>), @"public:
virtual System::Collections::Generic::IEnumerator<A> ^ GetEnumerator() = System::Collections::Generic::IEnumerable<A>::GetEnumerator;",
nameof(MyList1<int, int>.GetEnumerator));
-
}
[Test]
@@ -250,7 +249,6 @@ generic <typename T>
static Mono_DocTest::Widget ^ operator +(Mono_DocTest::Widget ^ x1, Mono_DocTest::Widget ^ x2);",
"op_Addition");
-
[Test]
[Category("Methods")]
[Category("NoSupport")]
@@ -266,6 +264,30 @@ generic <typename T>
}
[Test]
+ [Category("Type")]
+ public void TypeSignature_Widget()
+ {
+ TestTypeSignature(CSharpTestLib,
+ "Mono.DocTest.DocValueType", "public value class Mono::DocTest::DocValueType : Mono::DocTest::IProcess");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_Single()
+ {
+ TestTypeSignature(typeof(Single),
+ "public value class float : IComparable, IComparable<float>, IConvertible, IEquatable<float>, IFormattable");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_Int32()
+ {
+ TestTypeSignature(typeof(Int32),
+ "public value class int : IComparable, IComparable<int>, IConvertible, IEquatable<int>, IFormattable");
+ }
+
+ [Test]
[Category("Methods")]
public void MethodSignature_opExplicit() =>
TestMethodSignature(typeof(Widget), @"public:
diff --git a/mdoc/mdoc.Test/CppWinRtFormatterTests.cs b/mdoc/mdoc.Test/CppWinRtFormatterTests.cs
index c17ebec9..65e6a614 100644
--- a/mdoc/mdoc.Test/CppWinRtFormatterTests.cs
+++ b/mdoc/mdoc.Test/CppWinRtFormatterTests.cs
@@ -13,6 +13,7 @@ namespace mdoc.Test
private static readonly CppWinRtMemberFormatter CppWinRtMemberFormatter = new CppWinRtMemberFormatter();
protected override CppWinRtMemberFormatter formatter => CppWinRtMemberFormatter;
+ private string _cppWinRtTestLibName = "../../../../external/Windows/Windows.Foundation.UniversalApiContract.winmd";
private string _cppCxTestLibName = "../../../../external/Test/UwpTestWinRtComponentCpp.winmd";
private const string CSharpTestLib = "../../../../external/Test/CSharpExample.dll";
@@ -55,6 +56,55 @@ namespace mdoc.Test
[Test]
[Category("Type")]
+ public void TypeSignature_NumericsMatrix3x2()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Matrix3x2", "struct float3x2");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsMatrix4x4()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Matrix4x4", "struct float4x4");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsPlane()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Plane", "struct plane");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsQuaternion()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Quaternion", "struct quaternion");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsVector2()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Vector2", "struct float2");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsVector3()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Vector3", "struct float3");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NumericsVector4()
+ {
+ TestTypeSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Vector4", "struct float4");
+ }
+
+ [Test]
+ [Category("Type")]
public void TypeSignature_GenericInterface()
{
TestTypeSignature(typeof(IFoo<>), @"template <typename T>
@@ -87,6 +137,22 @@ class Widget : Mono_DocTest::IProcess");
}
[Test]
+ [Category("Type")]
+ public void TypeSignature_ValueGuid()
+ {
+ TestTypeSignature(typeof(Guid),
+ "struct winrt::guid : IComparable, IComparable<winrt::guid>, IEquatable<winrt::guid>, IFormattable");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_ValueSingle()
+ {
+ TestTypeSignature(typeof(Single),
+ "struct float : IComparable, IComparable<float>, IConvertible, IEquatable<float>, IFormattable");
+ }
+
+ [Test]
[Category("NoSupport")]
public void NoSupport_Delegate()
{
diff --git a/mdoc/mdoc.Test/CppWinRtMembersTests.cs b/mdoc/mdoc.Test/CppWinRtMembersTests.cs
index 000f7565..3711e8f8 100644
--- a/mdoc/mdoc.Test/CppWinRtMembersTests.cs
+++ b/mdoc/mdoc.Test/CppWinRtMembersTests.cs
@@ -1,4 +1,5 @@
-using Mono.Documentation.Updater.Formatters.CppFormatters;
+using mdoc.Test.SampleClasses;
+using Mono.Documentation.Updater.Formatters.CppFormatters;
using Mono_DocTest;
using NUnit.Framework;
using Cpp = Mono_DocTest_Generic;
@@ -11,6 +12,7 @@ namespace mdoc.Test
private static readonly CppWinRtFullMemberFormatter CppWinRtFullMemberFormatter = new CppWinRtFullMemberFormatter();
protected override CppWinRtFullMemberFormatter formatter => CppWinRtFullMemberFormatter;
+ private string _cppWinRtTestLibName = "../../../../external/Windows/Windows.Foundation.UniversalApiContract.winmd";
private string CppCxTestLibName = "../../../../external/Test/UwpTestWinRtComponentCpp.winmd";
private const string CSharpTestLib = "../../../../external/Test/CSharpExample.dll";
@@ -19,7 +21,7 @@ namespace mdoc.Test
public void Method_ComputeResult()
{
TestMethodSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "ComputeResult",
- @"winrt::Windows::Foundation::Collections::IVector<double> ComputeResult(double input);");
+ @"winrt::Windows::Foundation::Collections::IVector<double> ComputeResult(double const& input);");
}
[Test]
@@ -27,7 +29,7 @@ namespace mdoc.Test
public void Method_GetPrimesOrdered()
{
TestMethodSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "GetPrimesOrdered",
- @"winrt::Windows::Foundation::IAsyncOperationWithProgress<winrt::Windows::Foundation::Collections::IVector<int>, double> GetPrimesOrdered(int first, int last);");
+ @"winrt::Windows::Foundation::IAsyncOperationWithProgress<winrt::Windows::Foundation::Collections::IVector<int>, double> GetPrimesOrdered(int const& first, int const& last);");
}
@@ -36,7 +38,23 @@ namespace mdoc.Test
public void Method_GetPrimesUnordered()
{
TestMethodSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "GetPrimesUnordered",
- @"winrt::Windows::Foundation::IAsyncActionWithProgress<double> GetPrimesUnordered(int first, int last);");
+ @"winrt::Windows::Foundation::IAsyncActionWithProgress<double> GetPrimesUnordered(int const& first, int const& last);");
+ }
+
+ [Test]
+ public void Method_CreateNewGuid()
+ {
+ var member = GetMethod(typeof(GuidClass), m => m.Name == "CreateNewGuid");
+ var sig = formatter.GetDeclaration(member);
+ Assert.AreEqual(@" static winrt::guid CreateNewGuid();", sig);
+ }
+
+ [Test]
+ public void Method_ObjectIndentical()
+ {
+ var member = GetMethod(typeof(GuidClass), m => m.Name == "ObjectIndentical");
+ var sig = formatter.GetDeclaration(member);
+ Assert.AreEqual(@"bool ObjectIndentical(winrt::guid const& objGuid1, winrt::guid const& objGuid2);", sig);
}
[Test]
@@ -44,7 +62,7 @@ namespace mdoc.Test
public void Method_DefaultParameters()
{
TestMethodSignature(CSharpTestLib, "Mono.DocTest.Widget", "Default",
- @"void Default(int a = 1, int b = 2);");
+ @"void Default(int const& a = 1, int const& b = 2);");
}
[Test]
@@ -52,7 +70,7 @@ namespace mdoc.Test
public void Method_RefType()
{
TestMethodSignature(CppCxTestLibName, "Namespace222.App", "SetWindow1",
- @"void SetWindow1(winrt::Windows::UI::Core::CoreWindow const & window);");
+ @"void SetWindow1(winrt::Windows::UI::Core::CoreWindow const& window);");
}
[Test]
@@ -60,7 +78,29 @@ namespace mdoc.Test
public void Method_WinRtTypeInterfaceImplementation()
{
TestMethodSignature(CppCxTestLibName, "Namespace222.App", "SetWindow",
- @"void SetWindow(winrt::Windows::UI::Core::CoreWindow const & window);");
+ @"void SetWindow(winrt::Windows::UI::Core::CoreWindow const& window);");
+ }
+
+ [Test]
+ [Category("Properties")]
+ public void Property_WinRtNumericsActualSize()
+ {
+ TestPropertySignature(_cppWinRtTestLibName, "Windows.UI.Xaml.UIElement", "ActualSize", "float2 ActualSize();");
+ }
+
+ [Test]
+ [Category("Properties")]
+ public void Property_WinRtNumericsTransformMatrix()
+ {
+ TestPropertySignature(_cppWinRtTestLibName, "Windows.UI.Xaml.UIElement", "TransformMatrix",
+ "float4x4 TransformMatrix();\n\nvoid TransformMatrix(float4x4 value);");
+ }
+
+ [Test]
+ [Category("Fields")]
+ public void Field_WinRtNumericsPlaneNormal()
+ {
+ TestFieldSignature(_cppWinRtTestLibName, "Windows.Foundation.Numerics.Plane", "Normal", "float3 Normal;");
}
[Test]
@@ -90,7 +130,7 @@ event_token primeFoundEvent(UwpTestWinRtComponentCpp::PrimeFoundHandler const& h
void primeFoundEvent(event_token const* cookie) const;
// Revoke with event_revoker
-primeFoundEvent_revoker primeFoundEvent(auto_revoke_t, UwpTestWinRtComponentCpp::PrimeFoundHandler const& handler) const;";
+Class1::primeFoundEvent_revoker primeFoundEvent(auto_revoke_t, UwpTestWinRtComponentCpp::PrimeFoundHandler const& handler) const;";
TestEventSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "primeFoundEvent", expectedSig);
}
diff --git a/mdoc/mdoc.Test/FormatterTests.cs b/mdoc/mdoc.Test/FormatterTests.cs
index 439d9767..f7b60e4e 100644
--- a/mdoc/mdoc.Test/FormatterTests.cs
+++ b/mdoc/mdoc.Test/FormatterTests.cs
@@ -226,6 +226,23 @@ namespace mdoc.Test
var sig = formatter.GetDeclaration (member);
Assert.AreEqual (".method public hidebysig instance void RefAndOut(int32& a, [out] int32& b) cil managed", sig);
}
+
+ [Test]
+ public void CreateNewGuid()
+ {
+ var member = GetMethod(typeof(GuidClass), m => m.Name == "CreateNewGuid");
+ var sig = formatter.GetDeclaration(member);
+ Assert.AreEqual("public static Guid CreateNewGuid ();", sig);
+ }
+
+ [Test]
+ public void ObjectIndentical()
+ {
+ var member = GetMethod(typeof(GuidClass), m => m.Name == "ObjectIndentical");
+ var sig = formatter.GetDeclaration(member);
+ Assert.AreEqual("public bool ObjectIndentical (Guid objGuid1, Guid objGuid2);", sig);
+ }
+
[Test]
public void MethodSignature_Finalize() =>
TestMethodSignature(typeof(SomeGenericClass<>),
diff --git a/mdoc/mdoc.Test/SampleClasses/ApplePlatformEnum.cs b/mdoc/mdoc.Test/SampleClasses/ApplePlatformEnum.cs
new file mode 100644
index 00000000..490c7978
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/ApplePlatformEnum.cs
@@ -0,0 +1,48 @@
+using System;
+
+namespace ObjCRuntime
+{
+ [Flags]
+ public enum Platform : ulong
+ {
+ None = 0,
+ iOS_2_0 = 0x0000000000020000,
+ iOS_2_2 = 0x0000000000020200,
+ iOS_3_0 = 0x0000000000030000,
+ iOS_3_1 = 0x0000000000030100,
+ iOS_3_2 = 0x0000000000030200,
+ iOS_4_0 = 0x0000000000040000,
+ iOS_4_1 = 0x0000000000040100,
+ iOS_4_2 = 0x0000000000040200,
+ iOS_4_3 = 0x0000000000040300,
+ iOS_5_0 = 0x0000000000050000,
+ iOS_5_1 = 0x0000000000050100,
+ iOS_6_0 = 0x0000000000060000,
+ iOS_6_1 = 0x0000000000060100,
+ iOS_7_0 = 0x0000000000070000,
+ iOS_7_1 = 0x0000000000070100,
+ iOS_8_0 = 0x0000000000080000,
+ iOS_8_1 = 0x0000000000080100,
+ iOS_8_2 = 0x0000000000080200,
+ iOS_8_3 = 0x0000000000080300,
+ Mac_10_0 = 0x000A000000000000,
+ Mac_10_1 = 0x000A010000000000,
+ Mac_10_2 = 0x000A020000000000,
+ Mac_10_3 = 0x000A030000000000,
+ Mac_10_4 = 0x000A040000000000,
+ Mac_10_5 = 0x000A050000000000,
+ Mac_10_6 = 0x000A060000000000,
+ Mac_10_7 = 0x000A070000000000,
+ Mac_10_8 = 0x000A080000000000,
+ Mac_10_9 = 0x000A090000000000,
+ Mac_10_10 = 0x000A0A0000000000,
+ iOS_Version = 0x0000000000FFFFFF,
+ Mac_Version = 0x00FFFFFF00000000,
+ Mac_Arch32 = 0x0100000000000000,
+ Mac_Arch64 = 0x0200000000000000,
+ Mac_Arch = 0xFF00000000000000,
+ iOS_Arch32 = 0x0000000001000000,
+ iOS_Arch64 = 0x0000000002000000,
+ iOS_Arch = 0x00000000FF000000
+ }
+}
diff --git a/mdoc/mdoc.Test/SampleClasses/AttributeDataTypeAttribute.cs b/mdoc/mdoc.Test/SampleClasses/AttributeDataTypeAttribute.cs
new file mode 100644
index 00000000..ce49992e
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/AttributeDataTypeAttribute.cs
@@ -0,0 +1,57 @@
+using System;
+
+namespace mdoc.Test.SampleClasses
+{
+ public class AttributeDataTypeAttribute : Attribute
+ {
+ public object ObjectType { get; set; }
+
+ public Type TypeType { get; set; }
+
+ public bool BoolType { get; set; }
+
+ public SByte SByteType { get; set; }
+
+ public Byte ByteType { get; set; }
+
+ public Int16 Int16Type { get; set; }
+
+ public UInt16 UInt16Type { get; set; }
+
+ public Int32 Int32Type { get; set; }
+
+ public Int32? NullableOfInt32Type { get; set; }
+
+ public UInt32 UInt32Type { get; set; }
+
+ public Int64 Int64Type { get; set; }
+
+ public UInt64 UInt64Type { get; set; }
+
+ public Single SingleType { get; set; }
+
+ public Double DoubleType { get; set; }
+
+ public char CharType { get; set; }
+
+ public string StringType { get; set; }
+
+ public int[] ArrayOfIntType { get; set; }
+
+ public ConsoleColor EnumType { get; set; }
+
+ public SomeNestedTypes.NestedEnum NestedEnumType { get; set; }
+
+ public SomeNestedTypes.NestedFlagsEnum NestedFlagsEnumType { get; set; }
+
+ public SomeFlagsEnum DuplicateFlagsEnumType { get; set; }
+
+ public AttributeTargets FlagsEnumType { get; set; }
+
+ public NotApplyAttributeValidFlagsEnum NotApplyAttributeFlagsEnumType { get; set; }
+
+ public NotApplyAttributeInvalidFlagsEnum NotApplyAttributeInvalidFlagsEnumType { get; set; }
+
+ public ObjCRuntime.Platform ApplePlatformFlagsEnumType { get; set; }
+ }
+}
diff --git a/mdoc/mdoc.Test/SampleClasses/GuidClass.cs b/mdoc/mdoc.Test/SampleClasses/GuidClass.cs
new file mode 100644
index 00000000..9e355b19
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/GuidClass.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace mdoc.Test.SampleClasses
+{
+ public class GuidClass
+ {
+ private readonly Guid _guid = Guid.Empty;
+
+ private GuidClass() { this._guid = Guid.NewGuid(); }
+
+ public GuidClass (Guid guid) { this._guid = guid; }
+
+ public static Guid CreateNewGuid() { return new Guid(); }
+ public bool ObjectIndentical(Guid objGuid1, Guid objGuid2) { return objGuid1 == objGuid2; }
+ public bool IsUnique(Guid guid) { return guid == _guid; }
+ }
+}
diff --git a/mdoc/mdoc.Test/SampleClasses/NotApplyAttributeInvalidFlagsEnum.cs b/mdoc/mdoc.Test/SampleClasses/NotApplyAttributeInvalidFlagsEnum.cs
new file mode 100644
index 00000000..e0ad0455
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/NotApplyAttributeInvalidFlagsEnum.cs
@@ -0,0 +1,10 @@
+namespace mdoc.Test.SampleClasses
+{
+ public enum NotApplyAttributeInvalidFlagsEnum
+ {
+ None = 0,
+ Read = 1,
+ Write = 2,
+ ReadWrite = 3
+ }
+}
diff --git a/mdoc/mdoc.Test/SampleClasses/NotApplyAttributeValidFlagsEnum.cs b/mdoc/mdoc.Test/SampleClasses/NotApplyAttributeValidFlagsEnum.cs
new file mode 100644
index 00000000..de4fa77e
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/NotApplyAttributeValidFlagsEnum.cs
@@ -0,0 +1,12 @@
+namespace mdoc.Test.SampleClasses
+{
+ public enum NotApplyAttributeValidFlagsEnum
+ {
+ None = 0,
+ Assembly = 1,
+ Module = 2,
+ Class = 4,
+ Struct = 8,
+ Enum = 16
+ }
+}
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeAttribute.cs b/mdoc/mdoc.Test/SampleClasses/SomeAttribute.cs
new file mode 100644
index 00000000..2b7850ce
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeAttribute.cs
@@ -0,0 +1,450 @@
+using Mono.Cecil;
+using System;
+using System.Collections.Generic;
+
+namespace mdoc.Test.SampleClasses
+{
+ public class SomeAttribute
+ {
+ [AttributeDataType(TypeType = typeof(TypeReference))]
+ public void PropertyTypeType()
+ {
+ }
+
+ [AttributeDataType(TypeType = null)]
+ public void PropertyTypeTypeWithNull()
+ {
+ }
+
+ [AttributeDataType(TypeType = typeof(SomeNestedTypes.NestedClass))]
+ public void PropertyTypeTypeWithNestedType()
+ {
+ }
+
+ [AttributeDataType(TypeType = typeof(ICollection<>))]
+ public void PropertyTypeTypeWithUnboundCollection()
+ {
+ }
+
+ [AttributeDataType(TypeType = typeof(ICollection<int>))]
+ public void PropertyTypeTypeWithCollectionOfInt()
+ {
+ }
+
+ [AttributeDataType(TypeType = typeof(IDictionary<,>))]
+ public void PropertyTypeTypeWithUnboundDictionary()
+ {
+ }
+
+ [AttributeDataType(TypeType = typeof(IDictionary<int, int>))]
+ public void PropertyTypeTypeWithDictionaryOfInt()
+ {
+ }
+
+ [AttributeDataType(TypeType = typeof(SomeGenericClass<>))]
+ public void PropertyTypeTypeWithUnboundCustomGenericType()
+ {
+ }
+
+ [AttributeDataType(TypeType = typeof(SomeGenericClass<int>))]
+ public void PropertyTypeTypeWithCustomGenericTypeOfInt()
+ {
+ }
+
+ [AttributeDataType(TypeType = typeof(SomeNestedTypes.NestedGenericType<>))]
+ public void PropertyTypeTypeWithUnboundNestedGenericType()
+ {
+ }
+
+ [AttributeDataType(TypeType = typeof(SomeNestedTypes.NestedGenericType<int>))]
+ public void PropertyTypeTypeWithNestedGenericTypeOfInt()
+ {
+ }
+
+
+ [AttributeDataType(TypeType = typeof(SomeNestedTypes.NestedGenericType<>.InnerNestedGenericType<>))]
+ public void PropertyTypeTypeWithUnboundInnerNestedGenericType()
+ {
+ }
+
+ [AttributeDataType(TypeType = typeof(SomeNestedTypes.NestedGenericType<string>.InnerNestedGenericType<int>))]
+ public void PropertyTypeTypeWithInnerNestedGenericTypeOfInt()
+ {
+ }
+
+ [AttributeDataType(BoolType = true)]
+ public void PropertyBoolType()
+ {
+ }
+
+ [AttributeDataType(SByteType = SByte.MinValue)]
+ public void PropertySByteType()
+ {
+ }
+
+ [AttributeDataType(ByteType = Byte.MaxValue)]
+ public void PropertyByteType()
+ {
+ }
+
+ [AttributeDataType(Int16Type = Int16.MinValue)]
+ public void PropertyInt16Type()
+ {
+ }
+
+ [AttributeDataType(UInt16Type = UInt16.MaxValue)]
+ public void PropertyUInt16Type()
+ {
+ }
+
+ [AttributeDataType(Int32Type = Int32.MinValue)]
+ public void PropertyInt32Type()
+ {
+ }
+
+ [AttributeDataType(UInt32Type = UInt32.MaxValue)]
+ public void PropertyUInt32Type()
+ {
+ }
+
+ [AttributeDataType(Int64Type = Int64.MinValue)]
+ public void PropertyInt64Type()
+ {
+ }
+
+ [AttributeDataType(UInt64Type = UInt64.MaxValue)]
+ public void PropertyUInt64Type()
+ {
+ }
+
+ [AttributeDataType(SingleType = Single.MinValue)]
+ public void PropertySingleType()
+ {
+ }
+
+ [AttributeDataType(DoubleType = Double.MinValue)]
+ public void PropertyDoubleType()
+ {
+ }
+
+ [AttributeDataType(CharType = 'C')]
+ public void PropertyCharType()
+ {
+ }
+
+ [AttributeDataType(StringType = "This is a string argument.")]
+ public void PropertyStringType()
+ {
+ }
+
+ [AttributeDataType(StringType = null)]
+ public void PropertyStringTypeWithNull()
+ {
+ }
+
+ [AttributeDataType(StringType = "")]
+ public void PropertyStringTypeWithEmptyString()
+ {
+ }
+
+ [AttributeDataType(ArrayOfIntType = new[] { 0, 0, 7 })]
+ public void PropertyArrayOfIntType()
+ {
+ }
+
+ [AttributeDataType(ArrayOfIntType = null)]
+ public void PropertyArrayOfIntTypeWithNull()
+ {
+ }
+
+ [AttributeDataType(EnumType = ConsoleColor.Red)]
+ public void PropertyEnumType()
+ {
+ }
+
+ [AttributeDataType(EnumType = (ConsoleColor)int.MaxValue)]
+ public void PropertyEnumTypeWithUnknownValue()
+ {
+ }
+
+ [AttributeDataType(NestedEnumType = SomeNestedTypes.NestedEnum.Read)]
+ public void PropertyNestedEnumType()
+ {
+ }
+
+ [AttributeDataType(NestedEnumType = (SomeNestedTypes.NestedEnum)int.MaxValue)]
+ public void PropertyNestedEnumTypeWithUnknownValue()
+ {
+ }
+
+ [AttributeDataType(FlagsEnumType = AttributeTargets.Class | AttributeTargets.Enum)]
+ public void PropertyFlagsEnumType()
+ {
+ }
+
+ [AttributeDataType(FlagsEnumType = AttributeTargets.All)]
+ public void PropertyFlagsEnumTypeWithAllValue()
+ {
+ }
+
+ [AttributeDataType(FlagsEnumType = (AttributeTargets)0)]
+ public void PropertyFlagsEnumTypeWithUndefineValueZero()
+ {
+ }
+
+ [AttributeDataType(DuplicateFlagsEnumType = SomeFlagsEnum.Read | SomeFlagsEnum.Write | SomeFlagsEnum.Open)]
+ public void PropertyDuplicateFlagsEnumTypeWithCombinationValue()
+ {
+ }
+
+ [AttributeDataType(NestedFlagsEnumType = SomeNestedTypes.NestedFlagsEnum.Class | SomeNestedTypes.NestedFlagsEnum.Enum)]
+ public void PropertyNestedFlagsEnumType()
+ {
+ }
+
+ [AttributeDataType(NestedFlagsEnumType = (SomeNestedTypes.NestedFlagsEnum)0)]
+ public void PropertyNestedFlagsEnumTypeWithUndefineValueZero()
+ {
+ }
+
+ [AttributeDataType(NotApplyAttributeFlagsEnumType = NotApplyAttributeValidFlagsEnum.Class | NotApplyAttributeValidFlagsEnum.Enum)]
+ public void PropertyFlagsEnumTypeWithNotApplyAttributeValidTypeAndCombinationValue()
+ {
+ }
+
+ [AttributeDataType(NotApplyAttributeFlagsEnumType = NotApplyAttributeValidFlagsEnum.Class)]
+ public void PropertyFlagsEnumTypeWithNotApplyAttributeValidTypeAndSingleValue()
+ {
+ }
+
+ [AttributeDataType(NotApplyAttributeInvalidFlagsEnumType = (NotApplyAttributeInvalidFlagsEnum)5)]
+ public void PropertyFlagsEnumTypeWithNotApplyAttributeInvalidTypeAndUnknownCombinationValue()
+ {
+ }
+
+ [AttributeDataType(ApplePlatformFlagsEnumType = ObjCRuntime.Platform.Mac_10_8 | ObjCRuntime.Platform.Mac_Arch64)]
+ public void PropertyFlagsEnumTypeWithApplePlatformType()
+ {
+ }
+
+ [AttributeDataType(ApplePlatformFlagsEnumType = ObjCRuntime.Platform.None)]
+ public void PropertyFlagsEnumTypeWithApplePlatformAndNoneValue()
+ {
+ }
+
+ [AttributeDataType(ObjectType = null)]
+ public void PropertyObjectWithNull()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(TypeReference))]
+ public void PropertyObjectWithTypeType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(SomeNestedTypes.NestedClass))]
+ public void PropertyObjectWithNestedTypeType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(ICollection<>))]
+ public void PropertyObjectWithUnboundCollectionType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(ICollection<int>))]
+ public void PropertyObjectWithCollectionTypeOfInt()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(IDictionary<,>))]
+ public void PropertyObjectWithUnboundDictionaryType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(IDictionary<int, int>))]
+ public void PropertyObjectWithDictionaryTypeOfInt()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(SomeGenericClass<>))]
+ public void PropertyObjectWithUnboundCustomGenericType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(SomeGenericClass<int>))]
+ public void PropertyObjectWithCustomGenericTypeOfInt()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(SomeNestedTypes.NestedGenericType<>))]
+ public void PropertyObjectWithUnboundNestedGenericType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(SomeNestedTypes.NestedGenericType<int>))]
+ public void PropertyObjectWithNestedGenericTypeOfInt()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(SomeNestedTypes.NestedGenericType<>.InnerNestedGenericType<>))]
+ public void PropertyObjectWithUnboundInnerNestedGenericType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = typeof(SomeNestedTypes.NestedGenericType<string>.InnerNestedGenericType<int>))]
+ public void PropertyObjectWithInnerNestedGenericTypeOfInt()
+ {
+ }
+
+ [AttributeDataType(ObjectType = true)]
+ public void PropertyObjectWithBoolType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = SByte.MinValue)]
+ public void PropertyObjectWithSByteType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = Byte.MaxValue)]
+ public void PropertyObjectWithByteType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = Int16.MinValue)]
+ public void PropertyObjectWithInt16Type()
+ {
+ }
+
+ [AttributeDataType(ObjectType = UInt16.MaxValue)]
+ public void PropertyObjectWithUInt16Type()
+ {
+ }
+
+ [AttributeDataType(ObjectType = Int32.MinValue)]
+ public void PropertyObjectWithInt32Type()
+ {
+ }
+
+ [AttributeDataType(ObjectType = UInt32.MaxValue)]
+ public void PropertyObjectWithUInt32Type()
+ {
+ }
+
+ [AttributeDataType(ObjectType = Int64.MinValue)]
+ public void PropertyObjectWithInt64Type()
+ {
+ }
+
+ [AttributeDataType(ObjectType = UInt64.MaxValue)]
+ public void PropertyObjectWithUInt64Type()
+ {
+ }
+
+ [AttributeDataType(ObjectType = Single.MinValue)]
+ public void PropertyObjectWithSingleType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = Double.MinValue)]
+ public void PropertyObjectWithDoubleType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = 'C')]
+ public void PropertyObjectWithCharType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = "This is a string argument.")]
+ public void PropertyObjectWithStringType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = "")]
+ public void PropertyObjectWithStringTypeAndEmptyString()
+ {
+ }
+
+ [AttributeDataType(ObjectType = new[] { 0, 0, 7 })]
+ public void PropertyObjectWithArrayOfIntType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = ConsoleColor.Red)]
+ public void PropertyObjectWithEnumType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = (ConsoleColor)int.MaxValue)]
+ public void PropertyObjectWithEnumTypeAndUnknownValue()
+ {
+ }
+
+ [AttributeDataType(ObjectType = SomeNestedTypes.NestedEnum.Read)]
+ public void PropertyObjectWithNestedEnumType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = (SomeNestedTypes.NestedEnum)int.MaxValue)]
+ public void PropertyObjectWithNestedEnumTypeAndUnknownValue()
+ {
+ }
+
+ [AttributeDataType(ObjectType = AttributeTargets.Class | AttributeTargets.Enum)]
+ public void PropertyObjectWithFlagsEnumType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = AttributeTargets.All)]
+ public void PropertyObjectWithFlagsEnumTypeAndAllValue()
+ {
+ }
+
+ [AttributeDataType(ObjectType = (AttributeTargets)0)]
+ public void PropertyObjectWithFlagsEnumTypeAndUndefineValueZero()
+ {
+ }
+
+ [AttributeDataType(ObjectType = SomeFlagsEnum.Read | SomeFlagsEnum.Write | SomeFlagsEnum.Open)]
+ public void PropertyObjectWithDuplicateFlagsEnumTypeAndCombinationValue()
+ {
+ }
+
+ [AttributeDataType(ObjectType = SomeNestedTypes.NestedFlagsEnum.Class | SomeNestedTypes.NestedFlagsEnum.Enum)]
+ public void PropertyObjectWithNestedFlagsEnumType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = (SomeNestedTypes.NestedFlagsEnum)0)]
+ public void PropertyObjectWithNestedFlagsEnumTypeAndUndefineValueZero()
+ {
+ }
+
+ [AttributeDataType(ObjectType = NotApplyAttributeValidFlagsEnum.Class | NotApplyAttributeValidFlagsEnum.Enum)]
+ public void PropertyObjectWithNotApplyAttributeValidFlagsEnumTypeAndCombinationValue()
+ {
+ }
+
+ [AttributeDataType(ObjectType = NotApplyAttributeValidFlagsEnum.Class)]
+ public void PropertyObjectWithNotApplyAttributeValidFlagsEnumTypeAndSingleValue()
+ {
+ }
+
+ [AttributeDataType(ObjectType = (NotApplyAttributeInvalidFlagsEnum)5)]
+ public void PropertyObjectWithNotApplyAttributeInvalidFlagsEnumTypeAndUnknownCombinationValue()
+ {
+ }
+
+ [AttributeDataType(ObjectType = ObjCRuntime.Platform.Mac_10_8 | ObjCRuntime.Platform.Mac_Arch64)]
+ public void PropertyObjectWithApplePlatformFlagsEnumType()
+ {
+ }
+
+ [AttributeDataType(ObjectType = ObjCRuntime.Platform.None)]
+ public void PropertyObjectWithApplePlatformFlagsEnumTypeAndNoneValue()
+ {
+ }
+ }
+}
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeFlagsEnum.cs b/mdoc/mdoc.Test/SampleClasses/SomeFlagsEnum.cs
new file mode 100644
index 00000000..a95365d3
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeFlagsEnum.cs
@@ -0,0 +1,14 @@
+using System;
+
+namespace mdoc.Test.SampleClasses
+{
+ [Flags]
+ public enum SomeFlagsEnum
+ {
+ Read = 1,
+ Write = 2,
+ ReadWrite = Read | Write,
+ Open = 4,
+ Close = 8
+ }
+}
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeIteratorStateMachine.cs b/mdoc/mdoc.Test/SampleClasses/SomeIteratorStateMachine.cs
new file mode 100644
index 00000000..3dbf6032
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeIteratorStateMachine.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace mdoc.Test.SampleClasses
+{
+ public class SomeIteratorStateMachine<TKey, TValue> : IEnumerable<KeyValuePair<TKey, TValue>>
+ {
+ public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
+ {
+ yield return new KeyValuePair<TKey, TValue>();
+ }
+
+ IEnumerator IEnumerable.GetEnumerator()
+ {
+ throw new NotImplementedException();
+ }
+
+ public IEnumerator<KeyValuePair<T1, T2>> WithParameterType<T1, T2>()
+ {
+ yield return new KeyValuePair<T1, T2>();
+
+ }
+
+ public class SomeNestedIteratorStateMachine<NestedTKey, NestedTValue> : IEnumerable<KeyValuePair<NestedTKey, NestedTValue>>
+ {
+ public IEnumerator<KeyValuePair<NestedTKey, NestedTValue>> GetEnumerator()
+ {
+ yield return new KeyValuePair<NestedTKey, NestedTValue>();
+ }
+
+ IEnumerator IEnumerable.GetEnumerator()
+ {
+ throw new NotImplementedException();
+ }
+
+ public IEnumerator<KeyValuePair<NestedT1, NestedT2>> WithParameterType<NestedT1, NestedT2>()
+ {
+ yield return new KeyValuePair<NestedT1, NestedT2>();
+
+ }
+ }
+ }
+}
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeNestedTypes.cs b/mdoc/mdoc.Test/SampleClasses/SomeNestedTypes.cs
new file mode 100644
index 00000000..1c8f332e
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeNestedTypes.cs
@@ -0,0 +1,34 @@
+using System;
+
+namespace mdoc.Test.SampleClasses
+{
+ public class SomeNestedTypes
+ {
+ public class NestedClass
+ {
+ }
+
+ public class NestedGenericType<T>
+ {
+ public class InnerNestedGenericType<T1>
+ {
+ }
+ }
+
+ public enum NestedEnum
+ {
+ Read = 1,
+ Write = 2,
+ }
+
+ [Flags]
+ public enum NestedFlagsEnum
+ {
+ Assembly = 1,
+ Module = 2,
+ Class = 4,
+ Struct = 8,
+ Enum = 16
+ }
+ }
+}
diff --git a/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.cpp b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.cpp
index 44d5f4cf..bf2bd782 100644
--- a/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.cpp
+++ b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.cpp
@@ -163,4 +163,4 @@ IAsyncActionWithProgress<double>^ Class1::GetPrimesUnordered(int first, int last
});
reporter.report(100.0);
});
-}
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/mdoc.Test.csproj b/mdoc/mdoc.Test/mdoc.Test.csproj
index 5daf4464..6f33aeb6 100644
--- a/mdoc/mdoc.Test/mdoc.Test.csproj
+++ b/mdoc/mdoc.Test/mdoc.Test.csproj
@@ -72,6 +72,7 @@
<Reference Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="AttributeValueFormatterTest.cs" />
<Compile Include="BasicFormatterTests.cs" />
<Compile Include="BasicTests.cs" />
<Compile Include="CppWinRtMembersTests.cs" />
@@ -94,11 +95,20 @@
<Compile Include="MDocFileSourceTests.cs" />
<Compile Include="MDocUpdaterTests.cs" />
<Compile Include="NullableReferenceTypesTests.cs" />
+ <Compile Include="SampleClasses\ApplePlatformEnum.cs" />
<Compile Include="SampleClasses\EiiImplementclass.cs" />
+ <Compile Include="SampleClasses\GuidClass.cs" />
<Compile Include="SampleClasses\Interface_A.cs" />
<Compile Include="SampleClasses\Interface_B.cs" />
<Compile Include="SampleClasses\InternalEIICalss.cs" />
+ <Compile Include="SampleClasses\SomeFlagsEnum.cs" />
+ <Compile Include="SampleClasses\SomeIteratorStateMachine.cs" />
+ <Compile Include="SampleClasses\NotApplyAttributeValidFlagsEnum.cs" />
+ <Compile Include="SampleClasses\NotApplyAttributeInvalidFlagsEnum.cs" />
<Compile Include="SampleClasses\NullablesAndTuples.cs" />
+ <Compile Include="SampleClasses\AttributeDataTypeAttribute.cs" />
+ <Compile Include="SampleClasses\SomeAttribute.cs" />
+ <Compile Include="SampleClasses\SomeNestedTypes.cs" />
<Compile Include="SampleClasses\StaticClass.cs" />
<Compile Include="SampleClasses\TestClassThree.cs" />
<Compile Include="SpanSpecial.cs" />
diff --git a/mdoc/mdoc.csproj b/mdoc/mdoc.csproj
index f9b0d745..9de40804 100644
--- a/mdoc/mdoc.csproj
+++ b/mdoc/mdoc.csproj
@@ -59,7 +59,6 @@
<Compile Include="Mono.Documentation\Framework\FrameworkTypeModel.cs" />
<Compile Include="Mono.Documentation\Framework\FrameworkNamespaceModel.cs" />
<Compile Include="Mono.Documentation\Updater\IAttributeParserContext.cs" />
- <Compile Include="Mono.Documentation\Updater\Formatters\AttributeFormatters\ApplePlatformEnumFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\AttributeFormatters\AttributeFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\AttributeFormatters\CppWinRtAttributeFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\AttributeFormatters\FSharpAttributeFormatter.cs" />
@@ -81,12 +80,9 @@
<Compile Include="Mono.Documentation\Updater\Formatters\CSharpMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\SlashDocCSharpMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\MsxdocSlashDocMemberFormatter.cs" />
- <Compile Include="Mono.Documentation\Updater\Formatters\AttributeFormatters\StandardFlagsEnumFormatter.cs" />
- <Compile Include="Mono.Documentation\Updater\Formatters\AttributeFormatters\DefaultAttributeValueFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\AttributeFormatters\AttributeValueFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\VBFullMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\VBMemberFormatter.cs" />
- <Compile Include="Mono.Documentation\Updater\ResolvedTypeInfo.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\FileNameMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\SlashDocMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\DocTypeMemberFormatter.cs" />
diff --git a/mdoc/mdoc.nuspec b/mdoc/mdoc.nuspec
index 6adf740b..770a36a5 100644
--- a/mdoc/mdoc.nuspec
+++ b/mdoc/mdoc.nuspec
@@ -2,7 +2,7 @@
<package >
<metadata>
<id>mdoc</id>
- <version>5.8.2</version>
+ <version>5.8.3</version>
<title>mdoc</title>
<authors>Microsoft</authors>
<owners>Microsoft</owners>