Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/api-doc-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mdoc
diff options
context:
space:
mode:
Diffstat (limited to 'mdoc')
-rw-r--r--mdoc/Consts.cs2
-rw-r--r--mdoc/Makefile7
-rw-r--r--mdoc/Mono.Documentation/MDocUpdater.cs129
-rw-r--r--mdoc/Mono.Documentation/Updater/DocUtils.cs13
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/DocTypeFullMemberFormatter.cs4
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs19
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/FSharpUsageFormatter.cs7
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/FileNameMemberFormatter.cs4
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/ILFullMemberFormatter.cs6
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs169
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/JsMemberFormatter.cs80
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/JsUsageFormatter.cs246
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs54
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs2
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/VBFullMemberFormatter.cs11
-rw-r--r--mdoc/Resources/monodoc-ecma.xsd5
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/Extensions.xml141
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/Func`2.xml64
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml34
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml20
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml34
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1.xml145
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/IFoo`1.xml45
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/MyList`1+Helper`2.xml61
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/MyList`1.xml205
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/MyList`2.xml428
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/Color.xml78
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/D.xml24
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/DocAttribute.xml103
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/DocValueType.xml58
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/IProcess.xml14
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/UseLists.xml173
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+Del.xml22
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+Direction.xml82
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+IMenuItem.xml47
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml31
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double+Triple.xml31
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double.xml31
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass.xml65
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass`1.xml69
-rw-r--r--mdoc/Test/en.expected-javascript/Mono.DocTest/Widget.xml881
-rw-r--r--mdoc/Test/en.expected-javascript/NoNamespace.xml33
-rw-r--r--mdoc/Test/en.expected-javascript/System/Action`1.xml26
-rw-r--r--mdoc/Test/en.expected-javascript/System/Array.xml110
-rw-r--r--mdoc/Test/en.expected-javascript/System/AsyncCallback.xml23
-rw-r--r--mdoc/Test/en.expected-javascript/System/Environment+SpecialFolder.xml16
-rw-r--r--mdoc/Test/en.expected-javascript/System/Environment.xml71
-rw-r--r--mdoc/Test/en.expected-javascript/index.xml223
-rw-r--r--mdoc/Test/en.expected-javascript/ns-.xml6
-rw-r--r--mdoc/Test/en.expected-javascript/ns-Mono.DocTest.Generic.xml6
-rw-r--r--mdoc/Test/en.expected-javascript/ns-Mono.DocTest.xml6
-rw-r--r--mdoc/Test/en.expected-javascript/ns-System.xml6
-rw-r--r--mdoc/mdoc.Test/BasicFormatterTests.cs4
-rw-r--r--mdoc/mdoc.Test/JsMemberFormatterTests.cs40
-rw-r--r--mdoc/mdoc.Test/JsUsageFormatterTests.cs286
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeClass.cs96
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeClassWithManyConstructors.cs15
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeDelegate.cs4
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeEmptyEnum.cs6
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeEnum.cs8
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeGenericClass.cs18
-rw-r--r--mdoc/mdoc.Test/SampleClasses/SomeStruct.cs9
-rw-r--r--mdoc/mdoc.Test/SampleClasses/WebHostHiddenAttribute.cs9
-rw-r--r--mdoc/mdoc.Test/SampleClasses/WebHostHiddenTestClass.cs14
-rw-r--r--mdoc/mdoc.Test/mdoc.Test.csproj11
-rw-r--r--mdoc/mdoc.csproj3
66 files changed, 4603 insertions, 90 deletions
diff --git a/mdoc/Consts.cs b/mdoc/Consts.cs
index 54e7b8a4..56066648 100644
--- a/mdoc/Consts.cs
+++ b/mdoc/Consts.cs
@@ -10,6 +10,8 @@ namespace Mono.Documentation
public const string VbNetLowCase = "vb.net";
public const string FSharp = "F#";
public const string FSharpLowCase = "f#";
+ public const string Javascript = "JavaScript";
+ public const string JavascriptLowCase = "javascript";
public const string Tab = " ";
public const string DependencyPropertyFullName = "System.Windows.DependencyProperty";
diff --git a/mdoc/Makefile b/mdoc/Makefile
index 28c178d8..cfa1fb2b 100644
--- a/mdoc/Makefile
+++ b/mdoc/Makefile
@@ -187,6 +187,12 @@ check-monodocer-vbnet2:
$(MONO) $(PROGRAM) update -lang vb.net -o Test/en.actual Test/DocTest.dll
$(DIFF) Test/en.expected-vbnet2 Test/en.actual
+check-monodocer-javascript:
+ -rm -Rf Test/en.actual
+ $(MAKE) Test/DocTest.dll-v1
+ $(MONO) $(PROGRAM) update -lang javascript -o Test/en.actual Test/DocTest.dll
+ $(DIFF) Test/en.expected-javascript Test/en.actual
+
check-monodocer-addNonGeneric:
-rm -Rf Test/en.actual
# first, make a docset with the generic method
@@ -582,6 +588,7 @@ check-doc-tools: check-monodocer-since \
check-overwrite-attribute \
check-monodocer-vbnet \
check-monodocer-vbnet2 \
+ check-monodocer-javascript \
check-monodocer-frameworks-with-nuget\
check-monodocer-fsharp \
check-monodocer-attached-entities \
diff --git a/mdoc/Mono.Documentation/MDocUpdater.cs b/mdoc/Mono.Documentation/MDocUpdater.cs
index 40c3049e..2dde2be9 100644
--- a/mdoc/Mono.Documentation/MDocUpdater.cs
+++ b/mdoc/Mono.Documentation/MDocUpdater.cs
@@ -9,7 +9,7 @@ using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
-
+using mdoc.Mono.Documentation.Updater.Formatters;
using Mono.Cecil;
using Mono.Documentation.Updater;
using Mono.Documentation.Updater.Frameworks;
@@ -405,6 +405,10 @@ namespace Mono.Documentation
typeFormatter = new FSharpMemberFormatter();
memberFormatter = new FSharpFullMemberFormatter();
break;
+ case Consts.JavascriptLowCase:
+ typeFormatter = new JsMemberFormatter();
+ memberFormatter = new JsMemberFormatter();
+ break;
default:
throw new ArgumentException("Unsupported formatter id '" + langId + "'.");
}
@@ -1524,7 +1528,9 @@ namespace Mono.Documentation
statisticsCollector.AddMetric (typeEntry.Framework.Name, StatisticsItem.Members, StatisticsMetrics.Added);
memberSet.Add (m.FullName);
- Console.WriteLine ("Member Added: " + mm.SelectSingleNode ("MemberSignature/@Value").InnerText);
+ var node = mm.SelectSingleNode("MemberSignature/@Value") ??
+ mm.SelectSingleNode("MemberSignature/@Usage");
+ Console.WriteLine ("Member Added: " + node.InnerText);
additions++;
}
}
@@ -1837,21 +1843,7 @@ namespace Mono.Documentation
foreach (MemberFormatter f in typeFormatters)
{
- string element = "TypeSignature[@Language='" + f.Language + "']";
- string valueToUse = f.GetDeclaration (type);
- if (valueToUse == null)
- continue;
- AddXmlNode (
- root.SelectNodes (element).Cast<XmlElement> ().ToArray (),
- x => x.GetAttribute ("Value") == valueToUse,
- x => x.SetAttribute ("Value", valueToUse),
- () =>
- {
- var node = WriteElementAttribute (root, element, "Language", f.Language, forceNewElement: true);
- var newnode = WriteElementAttribute (root, node, "Value", valueToUse);
- return newnode;
- },
- type);
+ UpdateSignature(f, type, root);
}
AddAssemblyNameToNode (root, type);
@@ -2075,27 +2067,7 @@ namespace Mono.Documentation
typeEntry.ProcessMember (mi);
foreach (MemberFormatter f in memberFormatters)
{
- string element = "MemberSignature[@Language='" + f.Language + "']";
-
- var valueToUse = f.GetDeclaration (mi);
- if (valueToUse == null)
- continue;
- AddXmlNode (
- me.SelectNodes (element).Cast<XmlElement> ().ToArray (),
- x => x.GetAttribute ("Value") == valueToUse,
- x => x.SetAttribute ("Value", valueToUse),
- () =>
- {
- var node = WriteElementAttribute (me, element, "Language", f.Language, forceNewElement: true);
- node = WriteElementAttribute (me, node, "Value", valueToUse);
- var usageSample = f.UsageFormatter?.GetDeclaration(mi);
- if (usageSample != null)
- {
- node = WriteElementAttribute(me, node, "Usage", usageSample);
- }
- return node;
- },
- mi);
+ UpdateSignature(f, mi, me);
}
WriteElementText (me, "MemberType", GetMemberType (mi));
@@ -2136,8 +2108,85 @@ namespace Mono.Documentation
MakeDocNode (info, typeEntry.Framework.Importers);
OrderMemberNodes (me, me.ChildNodes);
UpdateExtensionMethods (me, info);
- }
-
+ }
+
+ private static void UpdateSignature(MemberFormatter formatter, TypeDefinition type, XmlElement xmlElement)
+ {
+ var usageSample = formatter.UsageFormatter?.GetDeclaration(type);
+ var valueToUse = formatter.GetDeclaration (type);
+ if (valueToUse == null && usageSample == null)
+ return;
+
+ string elementXPath = "TypeSignature[@Language='" + formatter.Language + "']";
+ GetUpdateXmlMethods(formatter, xmlElement, elementXPath, valueToUse, usageSample,
+ out var valueMatches,
+ out var setValue,
+ out var makeNewNode);
+
+ AddXmlNode(
+ xmlElement.SelectNodes (elementXPath).Cast<XmlElement> ().ToArray (),
+ valueMatches,
+ setValue,
+ makeNewNode,
+ type);
+ }
+
+ private static void UpdateSignature(MemberFormatter formatter, MemberReference member, XmlElement xmlElement)
+ {
+ var valueToUse = formatter.GetDeclaration(member);
+ var usageSample = formatter.UsageFormatter?.GetDeclaration(member);
+ if (valueToUse == null && usageSample == null)
+ return;
+
+ string elementXPath = "MemberSignature[@Language='" + formatter.Language + "']";
+ GetUpdateXmlMethods(formatter, xmlElement, elementXPath, valueToUse, usageSample,
+ out var valueMatches,
+ out var setValue,
+ out var makeNewNode);
+
+ AddXmlNode(
+ xmlElement.SelectNodes(elementXPath).Cast<XmlElement>().ToArray(),
+ valueMatches,
+ setValue,
+ makeNewNode,
+ member);
+ }
+
+ private static void GetUpdateXmlMethods(MemberFormatter formatter, XmlElement xmlElement, string elementXPath, string valueToUse,
+ string usageSample, out Func<XmlElement, bool> valueMatches, out Action<XmlElement> setValue, out Func<XmlElement> makeNewNode)
+ {
+ valueMatches = x =>
+ x.GetAttribute("Value") == valueToUse
+ && (string.IsNullOrEmpty(x.GetAttribute("Usage")) || x.GetAttribute("Usage") == usageSample);
+
+ setValue = x =>
+ {
+ if (valueToUse != null)
+ {
+ x.SetAttribute("Value", valueToUse);
+ }
+ if (usageSample != null)
+ {
+ x.SetAttribute("Usage", usageSample);
+ }
+ };
+
+ makeNewNode = () =>
+ {
+ var node = WriteElementAttribute(xmlElement, elementXPath, "Language", formatter.Language, forceNewElement: true);
+ if (valueToUse != null)
+ {
+ node = WriteElementAttribute(xmlElement, node, "Value", valueToUse);
+ }
+ if (usageSample != null)
+ {
+ node = WriteElementAttribute(xmlElement, node, "Usage", usageSample);
+ }
+ return node;
+ };
+ }
+
+
private static void AddImplementedMembers(MemberReference mi, Dictionary<string, List<MemberReference>> allImplementedMembers, XmlElement root)
{
bool isExplicitlyImplemented = DocUtils.IsExplicitlyImplemented(mi);
diff --git a/mdoc/Mono.Documentation/Updater/DocUtils.cs b/mdoc/Mono.Documentation/Updater/DocUtils.cs
index 8c30decd..b6eabffe 100644
--- a/mdoc/Mono.Documentation/Updater/DocUtils.cs
+++ b/mdoc/Mono.Documentation/Updater/DocUtils.cs
@@ -568,5 +568,18 @@ namespace Mono.Documentation.Updater
return null;
}
+
+ public static bool IsDestructor(MethodDefinition method)
+ {
+ return method.IsFamily
+ && method.Name == "Finalize"
+ && method.Overrides.Count == 1
+ && method.Overrides[0].DeclaringType.FullName == "System.Object";
+ }
+
+ public static bool IsOperator(MethodReference method)
+ {
+ return method.Name.StartsWith("op_", StringComparison.Ordinal);
+ }
}
} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/DocTypeFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/DocTypeFullMemberFormatter.cs
index 087b9bb8..53f78567 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/DocTypeFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/DocTypeFullMemberFormatter.cs
@@ -4,9 +4,9 @@
{
public static readonly MemberFormatter Default = new DocTypeFullMemberFormatter ();
- protected override char NestedTypeSeparator
+ protected override string NestedTypeSeparator
{
- get { return '+'; }
+ get { return "+"; }
}
}
} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs
index e07e15f4..55c295e5 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/FSharpFormatter.cs
@@ -301,7 +301,7 @@ namespace Mono.Documentation.Updater
return "class";
}
- protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, DynamicParserContext context)
+ protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, DynamicParserContext context, bool appendGeneric = true)
{
List<TypeReference> decls = DocUtils.GetDeclaringTypes(
type is GenericInstanceType ? type.GetElementType() : type);
@@ -463,11 +463,6 @@ namespace Mono.Documentation.Updater
protected override string GetMethodDeclaration(MethodDefinition method)
{
- if (method.HasCustomAttributes && method.CustomAttributes.Any(
- ca => ca.GetDeclaringType() == "System.Diagnostics.Contracts.ContractInvariantMethodAttribute"
- || ca.GetDeclaringType() == "System.Runtime.CompilerServices.CompilerGeneratedAttribute"))
- return null;
-
var visibilityBuf = new StringBuilder();
if (AppendVisibility(visibilityBuf, method) == null)
return null;
@@ -989,6 +984,7 @@ namespace Mono.Documentation.Updater
{
return false;
}
+
return true;
}
@@ -1005,6 +1001,17 @@ namespace Mono.Documentation.Updater
}
return false;
}
+ switch (mref)
+ {
+ case MethodDefinition method:
+ return !(method.HasCustomAttributes && method.CustomAttributes.Any(
+ ca => ca.GetDeclaringType() ==
+ "System.Diagnostics.Contracts.ContractInvariantMethodAttribute"
+ || ca.GetDeclaringType() ==
+ "System.Runtime.CompilerServices.CompilerGeneratedAttribute"))
+ && AppendVisibility(new StringBuilder(), method) != null;
+ }
+
return true;
}
#endregion
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/FSharpUsageFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/FSharpUsageFormatter.cs
index 3bc076b0..c6992b21 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/FSharpUsageFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/FSharpUsageFormatter.cs
@@ -124,11 +124,6 @@ namespace Mono.Documentation.Updater
return buf.ToString();
}
- private static string CamelCase(string name)
- {
- return Char.ToLowerInvariant(name[0]) + name.Substring(1);
- }
-
private void AppendTupleUsage(StringBuilder buf, List<string> parameters)
{
if (parameters.Count == 0)
@@ -172,5 +167,7 @@ namespace Mono.Documentation.Updater
{
return $"{GetName(field.DeclaringType)}.{field.Name}";
}
+
+ public override bool IsSupported(TypeReference tref) => false;
}
} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/FileNameMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/FileNameMemberFormatter.cs
index 8fb7a54b..3e0e99c9 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/FileNameMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/FileNameMemberFormatter.cs
@@ -11,9 +11,9 @@ namespace Mono.Documentation.Updater
return buf;
}
- protected override char NestedTypeSeparator
+ protected override string NestedTypeSeparator
{
- get { return '+'; }
+ get { return "+"; }
}
}
} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/ILFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/ILFullMemberFormatter.cs
index f0887c76..9bb44c14 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/ILFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/ILFullMemberFormatter.cs
@@ -18,11 +18,11 @@ namespace Mono.Documentation.Updater
get { return "ILAsm"; }
}
- protected override char NestedTypeSeparator
+ protected override string NestedTypeSeparator
{
get
{
- return '/';
+ return "/";
}
}
@@ -185,7 +185,7 @@ namespace Mono.Documentation.Updater
return buf.ToString ();
}
- protected override StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, DynamicParserContext context)
+ protected override StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, DynamicParserContext context, bool appendGeneric = true)
{
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
new file mode 100644
index 00000000..0781cd58
--- /dev/null
+++ b/mdoc/Mono.Documentation/Updater/Formatters/JsFormatter.cs
@@ -0,0 +1,169 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Mono.Cecil;
+using Mono.Cecil.Rocks;
+using Mono.Collections.Generic;
+using Mono.Documentation.Updater;
+using Mono.Documentation.Util;
+
+namespace mdoc.Mono.Documentation.Updater.Formatters
+{
+ public class JsFormatter : MemberFormatter
+ {
+ // For the V1 Pri1 implementation, we will not implement custom “retrievers”.
+ // If a non-static class doesn’t have a public constructor
+ // (in other words, it is not possible to automatically determine the call to instantiate an instance of the class),
+ // the Javascript syntax should either:
+ //
+ // show a standard disclaimer such as:
+ // “This class does not provide a public constructor” or
+ // “See the remarks section for information on obtaining an instance of this class”
+ // Give a degenerate declarative syntax, such as simply: “Windows.System.FolderLauncherOptions” for the FolderLauncherOptions class.
+ // The specific solution to use here is still TBD. If you’re blocked, pick A1 for now.
+ // We will investigate whether a Pri 2 feature to modify the syntax block with custom syntax is necessary.
+ public override bool IsSupported(TypeReference tref)
+ {
+ var type = tref.Resolve();
+
+ if (type == null
+ || type.IsAbstract
+ || type.IsInterface// Interfaces: You cannot implement a Windows Runtime interface in JavaScript.
+ || type.HasGenericParameters
+ || !IsSupported(type.CustomAttributes)
+ || type.DeclaringType != null)//WinRT type can not be nested
+ {
+ return false;
+ }
+
+ if (type.IsEnum ||
+ type.IsValueType ||
+ DocUtils.IsDelegate(type))
+ {
+ if (type.IsEnum && !IsEnumSupported(type)) return false;
+
+ return true;
+ }
+
+ // Windows Runtime types cannot have multiple constructors with same number of arguments
+ var publicConstructors = type.GetConstructors().Where(i => i.IsPublic).ToList();
+ if (!publicConstructors.Any())
+ return false;
+
+ var constructorsWithEqualNumberOfArguments = publicConstructors.GroupBy(x => x.Parameters.Count)
+ .Where(g => g.Count() > 1)
+ .Select(y => y.Key)
+ .ToList();
+
+ return constructorsWithEqualNumberOfArguments.Count == 0;
+ }
+
+ protected virtual bool IsEnumSupported(TypeDefinition type)
+ {
+ return type.GetMembers().Skip(1).Any();//skip "__value element"
+ }
+
+ public override bool IsSupported(MemberReference mref)
+ {
+ switch (mref)
+ {
+ case PropertyDefinition propertyDefinition:
+ if (!IsPropertySupported(propertyDefinition))
+ return false;
+ break;
+ case MethodDefinition methodDefinition:
+ if (!IsMethodSupported(methodDefinition))
+ return false;
+ break;
+ case FieldDefinition _:
+ return false;// In WinRT fields can be exposed only by structures.
+ case AttachedEventDefinition _:
+ return false;
+ case AttachedPropertyDefinition _:
+ return false;
+ }
+
+ var member = mref.Resolve();
+ return member != null
+ && !member.DeclaringType.HasGenericParameters
+ && !(mref is IGenericParameterProvider genericParameterProvider && genericParameterProvider.HasGenericParameters)
+ && !(mref is IMethodSignature methodSignature && methodSignature.Parameters.Any(i => i.ParameterType is GenericParameter))
+ && mref.DeclaringType.DeclaringType == null//WinRT type can not be nested
+ && IsSupported(member.CustomAttributes);
+ }
+
+ private bool IsMethodSupported(MethodDefinition methodDefinition)
+ {
+ bool isDestructor = DocUtils.IsDestructor(methodDefinition);
+ return
+ !DocUtils.IsOperator(methodDefinition)
+ && (!isDestructor || methodDefinition.DeclaringType.Interfaces.Any(i => i.InterfaceType.FullName == "Windows.Foundation.IClosable"))
+ && methodDefinition.Parameters.All(i => IsSupported(i.CustomAttributes) && !(i.ParameterType is ByReferenceType))
+ && IsSupported(methodDefinition.MethodReturnType.CustomAttributes);
+ }
+
+ // How to determine if an API supports JavaScript
+ // Use the WebHostHidden attribute. If WebHostHidden is present, the API doesn’t support JavaScript.
+ // None of the APIs in the “XAML” namespaces support JavaScript.
+ protected bool IsSupported(Collection<CustomAttribute> memberCustomAttributes)
+ {
+ return
+ memberCustomAttributes.All(
+ i => i.AttributeType.FullName != "Windows.Foundation.Metadata.WebHostHiddenAttribute");
+ }
+
+ protected virtual bool IsPropertySupported(PropertyDefinition property)
+ {
+ bool getVisible = property.GetMethod != null && property.GetMethod.IsPublic;
+ bool setVisible = property.SetMethod != null && property.SetMethod.IsPublic;
+ if (!setVisible && !getVisible)
+ return false;
+
+ IEnumerable<MemberReference> defs = property.DeclaringType.GetDefaultMembers();
+ foreach (MemberReference mi in defs)
+ {
+ if (mi == property)
+ {
+ return false;
+ }
+ }
+ return property.Parameters.Count == 0;
+ }
+
+ protected override StringBuilder AppendParameters(StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters)
+ {
+ return buf.Append(string.Join(", ", parameters.Select(i => i.Name)));
+ }
+
+ protected MethodDefinition GetConstructor(TypeDefinition type)
+ {
+ return type.GetConstructors()
+ .Where(i => i.IsPublic)
+ .OrderByDescending(i => i.Parameters.Count)
+ .First();
+ }
+
+ protected override string GetMethodName(MethodReference method)
+ {
+ if (DocUtils.IsDestructor(method.Resolve()))
+ return "Close";
+ return CamelCase(method.Name);
+ }
+
+ protected override string GetTypeName(TypeReference type, DynamicParserContext context, bool appendGeneric = true)
+ {
+ int n = type.Name.IndexOf("`");
+ if (n >= 0)
+ return type.Name.Substring(0, n);
+ return type.Name;
+ }
+
+ protected string ProcessFullName(string fullName)
+ {
+ int n = fullName.IndexOf("`");
+ if (n >= 0)
+ return fullName.Substring(0, n);
+ return fullName;
+ }
+ }
+} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/JsMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/JsMemberFormatter.cs
new file mode 100644
index 00000000..b3c1b97b
--- /dev/null
+++ b/mdoc/Mono.Documentation/Updater/Formatters/JsMemberFormatter.cs
@@ -0,0 +1,80 @@
+using System.Text;
+using Mono.Cecil;
+using Mono.Documentation;
+using Mono.Documentation.Updater;
+
+namespace mdoc.Mono.Documentation.Updater.Formatters
+{
+ public class JsMemberFormatter : JsFormatter
+ {
+ public override string Language => Consts.Javascript;
+
+ private readonly MemberFormatter usageFormatter = new JsUsageFormatter();
+ public override MemberFormatter UsageFormatter => usageFormatter;
+
+ protected override string GetMethodDeclaration(MethodDefinition method)
+ {
+ var buf = new StringBuilder();
+
+ buf.Append("function ");
+ buf.Append(GetMethodName(method));
+ buf.Append("(");
+ AppendParameters(buf, method, method.Parameters);
+ buf.Append(")");
+
+ return buf.ToString();
+ }
+
+ protected override string GetTypeDeclaration(TypeDefinition type)
+ {
+ // What version of ES/JS is supported? For example, we need to know what kind of syntax to use to declare a type
+ // [RP] This depends on your target platform.
+ // In UWP, it’s the same “version” of ES that is currently supported by the Edge browser.
+ // For Windows 8.0, this was IE10, and for Windows 8.1, this was IE11.
+ // Since Windows 10 and Edge, the browser has been evergreen, and is well into the ES2015+ versions.
+
+ var publicConstructor = GetConstructor(type);
+ return GetDeclaration(publicConstructor);
+ }
+
+ protected override string GetConstructorDeclaration(MethodDefinition constructor)
+ {
+
+ var buf = new StringBuilder();
+
+ buf.Append("function ");
+ AppendTypeName(buf, constructor.DeclaringType.Name);
+ buf.Append("(");
+ AppendParameters(buf, constructor, constructor.Parameters);
+ buf.Append(")");
+
+ return buf.ToString();
+ }
+
+ public override bool IsSupported(MemberReference mref)
+ {
+ switch (mref)
+ {
+ case PropertyDefinition _:
+ return false;
+ case EventDefinition _:
+ return false;
+ }
+ return base.IsSupported(mref);
+ }
+
+ public override bool IsSupported(TypeReference tref)
+ {
+ var type = tref.Resolve();
+ if (type == null)
+ return false;
+
+ if (type.IsEnum ||
+ type.IsValueType ||
+ DocUtils.IsDelegate(type))
+ return false;
+
+ return base.IsSupported(tref);
+ }
+ }
+} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/JsUsageFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/JsUsageFormatter.cs
new file mode 100644
index 00000000..fb5040b4
--- /dev/null
+++ b/mdoc/Mono.Documentation/Updater/Formatters/JsUsageFormatter.cs
@@ -0,0 +1,246 @@
+using System.Linq;
+using System.Text;
+using Mono.Cecil;
+using Mono.Documentation;
+using Mono.Documentation.Updater;
+using Mono.Documentation.Util;
+
+namespace mdoc.Mono.Documentation.Updater.Formatters
+{
+ public class JsUsageFormatter : JsFormatter
+ {
+ public override string Language => "JavaScript (usage)";
+
+ protected override string GetPropertyDeclaration(PropertyDefinition property)
+ {
+ bool getVisible = property.GetMethod != null && property.GetMethod.IsPublic;
+ bool setVisible = property.SetMethod != null && property.SetMethod.IsPublic;
+ var method = property.SetMethod ?? property.GetMethod;
+
+ // https://github.com/mono/api-doc-tools/issues/133
+ // var [property value type, camel-cased] = [typename, camel-cased].[property name, camel-cased];
+ // [typename, camel-cased].[property name, camel-cased] = [property value type, camel-cased];
+ // Static properties
+ // var [property value type, camel-cased] = [typename].[property name, camel-cased];
+ // [typename].[property name, camel-cased] = [property value type, camel-cased];
+ var buf = new StringBuilder();
+ var propertyValueType = CamelCase(GetName(property.PropertyType));
+ var propertyName = DocUtils.GetPropertyName(property);
+ var propertyNameCamelCased = CamelCase(propertyName);
+ var typeName = GetName(property.DeclaringType);
+ if (!method.IsStatic)
+ typeName = CamelCase(typeName);
+
+ if (getVisible)
+ {
+ buf.Append("var ");
+ buf.Append(propertyValueType);
+ buf.Append(" = ");
+ buf.Append(typeName);
+ buf.Append(".");
+ buf.Append(propertyNameCamelCased);
+ buf.Append(";");
+ }
+
+ if (setVisible)
+ {
+ if (getVisible)
+ buf.Append(GetLineEnding());
+
+ buf.Append(typeName);
+ buf.Append(".");
+ buf.Append(propertyNameCamelCased);
+ buf.Append(" = ");
+ buf.Append(propertyValueType);
+ buf.Append(";");
+ }
+ return buf.ToString();
+ }
+
+ protected override string GetTypeDeclaration(TypeDefinition type)
+ {
+ var buf = new StringBuilder();
+
+ if (type.IsEnum)
+ {
+ // var value = [fully qualified type].[camel-cased name of first enum value];
+ var firstElement = type.GetMembers().Skip(1).First();//skip "__value element"
+
+ buf.Append("var value = ");
+ buf.Append(ProcessFullName(type.FullName));
+ buf.Append(".");
+ buf.Append(CamelCase(firstElement.Name));
+ return buf.ToString();
+ }
+ if (type.IsValueType)
+ {
+ //Structures: Windows Runtime structures are objects in JavaScript.
+ // If you want to pass a Windows Runtime structure to a Windows Runtime method,
+ // don't instantiate the structure with the new keyword. Instead, create an object
+ // and add the relevant members and their values. The names of the members should be in camel case:
+ // SomeStruct.firstMember.
+
+ // var [struct name, camel cased] = {
+ // [fieldname, came cased] : /* Your value */
+ buf.Append("var ");
+ buf.Append(CamelCase(GetName(type)));
+ buf.Append(" = {");
+ buf.Append(GetLineEnding());
+ buf.Append(string.Join("," + GetLineEnding(),
+ type.Fields.Select(i => CamelCase(i.Name) + " : /* Your value */")));
+ buf.Append(GetLineEnding());
+ buf.Append("}");
+ return buf.ToString();
+ }
+ if (DocUtils.IsDelegate(type))
+ {
+ // var [delegateName, camel-cased]Handler = function([parameter name list, camel cased]){
+ // /* Your code */
+ // }
+ MethodDefinition invoke = type.GetMethod("Invoke");
+ buf.Append("var ");
+ buf.Append(CamelCase(GetName(type)));
+ buf.Append("Handler = function(");
+ AppendParameters(buf, invoke, invoke.Parameters);
+ buf.Append("){");
+ buf.Append(GetLineEnding());
+ buf.Append("/* Your code */");
+ buf.Append(GetLineEnding());
+ buf.Append("}");
+ return buf.ToString();
+ }
+
+ var publicConstructor = GetConstructor(type);
+ return GetDeclaration(publicConstructor);
+ }
+
+ protected override string GetMethodDeclaration(MethodDefinition method)
+ {
+ var buf = new StringBuilder();
+
+ if (IsAsync(method))
+ {
+ // Async Methods
+ // (For static methods, use the fully-qualified class name. For non-static,
+ // use the class name without qualification and camel-cased.)
+ // [fully qualified type name].[camel-cased method name]([parameter names]).done( /* Your success and error handlers */ );
+ var typeName = CamelCase(GetName(method.DeclaringType));
+ if (method.IsStatic)
+ typeName = ProcessFullName(method.DeclaringType.FullName);
+
+ buf.Append(typeName);
+ buf.Append(".");
+ buf.Append(GetMethodName(method));
+ buf.Append("(");
+ AppendParameters(buf, method, method.Parameters);
+ buf.Append(").done( /* Your success and error handlers */ )");
+
+ return buf.ToString();
+ }
+
+ // For static and non-static method generate different signatures:
+ // 1) Non-static
+ // Usage (not void)
+ // var [return type, camel-cased] = [class-name, camel-cased].[method-name, camel-cased]([parameter name list]);
+ // Usage (void)
+ // [class-name, camel-cased].[method-name, camel cased]([parameter name list]);
+ // 2) Static
+ // Usage (not void)
+ // var [return type, camel-cased] = [fully-qualified class-name].[method-name, camel-cased]([parameter n
+ // Usage (void)
+ // [fully-qualified class name].[method-name, camel cased]([parameter name list]);
+ if (method.ReturnType != null && ProcessFullName(method.ReturnType.FullName) != Consts.VoidFullName)
+ {
+ buf.Append("var ");
+ buf.Append(CamelCase(GetName(method.ReturnType)));
+ buf.Append(" = ");
+ }
+ var className = method.IsStatic ? ProcessFullName(method.DeclaringType.FullName) : CamelCase(GetName(method.DeclaringType));
+ buf.Append(className);
+ buf.Append(".");
+ buf.Append(CamelCase(method.Name));
+ buf.Append("(");
+ AppendParameters(buf, method, method.Parameters);
+ buf.Append(")");
+
+ return buf.ToString();
+ }
+
+ protected override string GetConstructorDeclaration(MethodDefinition constructor)
+ {
+ var buf = new StringBuilder();
+
+ var typeName = GetName(constructor.DeclaringType);
+ buf.Append("var ");
+ buf.Append(CamelCase(typeName));
+ buf.Append(" = new ");
+ buf.Append(typeName);
+ buf.Append("(");
+ AppendParameters(buf, constructor, constructor.Parameters);
+ buf.Append(");");
+
+ return buf.ToString();
+ }
+
+ private bool IsAsync(MethodDefinition method)
+ {
+ return method.CustomAttributes.Any(i => i.AttributeType.FullName == "System.Runtime.CompilerServices.AsyncStateMachineAttribute");
+ }
+
+ protected override StringBuilder AppendNamespace(StringBuilder buf, TypeReference type)
+ {
+ return buf;
+ }
+
+ protected override string GetEventDeclaration(EventDefinition e)
+ {
+ // Usage:
+ //function on[EventName](eventArgs){/* Your code */}
+ //[class name, camel cased].addEventListener(“[event name, all lower-case]”, on[EventName]);
+ //[class name, camel cased].removeEventListener(“[event name, all lower-case]”, on[EventName]);
+ // If the event supports property syntax (it has a corresponding EventName property), add this:
+ // - or -
+ //[class name, camel cased].on[event name, all lower-case] = on[EventName];
+ if (!e.AddMethod.IsPublic)
+ return null;
+
+ var className = e.AddMethod.IsStatic ? ProcessFullName(e.DeclaringType.FullName) : CamelCase(GetName(e.DeclaringType));
+ var eventName = e.Name;
+ var eventNameLowerCased = eventName.ToLower();
+ var buf = new StringBuilder();
+ buf.Append("function on");
+ buf.Append(e.Name);
+ buf.Append("(");
+ buf.Append("eventArgs");
+ buf.Append(") { /* Your code */ }");
+
+ buf.Append(GetLineEnding());
+ buf.Append(className);
+ buf.Append(".addEventListener(\"");
+ buf.Append(eventNameLowerCased);
+ buf.Append("\", on");
+ buf.Append(eventName);
+ buf.Append(");");
+
+ buf.Append(GetLineEnding());
+ buf.Append(className);
+ buf.Append(".removeEventListener(\"");
+ buf.Append(eventNameLowerCased);
+ buf.Append("\", on");
+ buf.Append(eventName);
+ buf.Append(");");
+
+ buf.Append(GetLineEnding());
+ buf.Append("- or -");
+ buf.Append(GetLineEnding());
+ buf.Append(className);
+ buf.Append(".on");
+ buf.Append(eventNameLowerCased);
+ buf.Append(" = on");
+ buf.Append(eventName);
+ buf.Append(";");
+
+ return buf.ToString();
+ }
+ }
+}
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs
index 3bfa00d4..4df41918 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs
@@ -3,9 +3,10 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
-using Mono.Cecil;
+
using Mono.Documentation.Util;
+using Mono.Cecil;
namespace Mono.Documentation.Updater
{
@@ -17,16 +18,16 @@ namespace Mono.Documentation.Updater
get { return ""; }
}
- public string GetName (MemberReference member)
+ public string GetName (MemberReference member, bool appendGeneric = true)
{
- return GetName (member, null);
+ return GetName (member, null, appendGeneric);
}
- public virtual string GetName (MemberReference member, DynamicParserContext context)
+ public virtual string GetName (MemberReference member, DynamicParserContext context, bool appendGeneric = true)
{
TypeReference type = member as TypeReference;
if (type != null)
- return GetTypeName (type, context);
+ return GetTypeName (type, context, appendGeneric);
MethodReference method = member as MethodReference;
if (method != null && method.Name == ".ctor") // method.IsConstructor
return GetConstructorName (method);
@@ -45,17 +46,17 @@ namespace Mono.Documentation.Updater
(member == null ? "null" : member.GetType ().ToString ()));
}
- protected virtual string GetTypeName (TypeReference type)
+ protected virtual string GetTypeName (TypeReference type, bool appendGeneric = true)
{
- return GetTypeName (type, null);
+ return GetTypeName (type, null, appendGeneric);
}
- protected virtual string GetTypeName (TypeReference type, DynamicParserContext context)
+ protected virtual string GetTypeName (TypeReference type, DynamicParserContext context, bool appendGeneric=true)
{
if (type == null)
throw new ArgumentNullException (nameof (type));
- var typeName = _AppendTypeName (new StringBuilder (type.Name.Length), type, context).ToString ();
+ var typeName = _AppendTypeName (new StringBuilder (type.Name.Length), type, context, appendGeneric).ToString ();
typeName = RemoveMod (typeName);
@@ -97,13 +98,20 @@ namespace Mono.Documentation.Updater
protected virtual MemberFormatterState MemberFormatterState { get; set; }
- protected StringBuilder _AppendTypeName (StringBuilder buf, TypeReference type, DynamicParserContext context)
+ protected virtual StringBuilder AppendArrayTypeName(StringBuilder buf, TypeReference type, DynamicParserContext context)
+ {
+ TypeSpecification spec = type as TypeSpecification;
+ _AppendTypeName(buf, spec != null ? spec.ElementType : type.GetElementType(), context);
+ return AppendArrayModifiers(buf, (ArrayType)type);
+ }
+
+ protected StringBuilder _AppendTypeName (StringBuilder buf, TypeReference type, DynamicParserContext context, bool appendGeneric = true)
{
if (type is ArrayType)
{
- TypeSpecification spec = type as TypeSpecification;
- _AppendTypeName (buf, spec != null ? spec.ElementType : type.GetElementType (), context);
- return AppendArrayModifiers (buf, (ArrayType)type);
+
+ return AppendArrayTypeName(buf, type, context);
+
}
if (type is ByReferenceType)
{
@@ -124,7 +132,7 @@ namespace Mono.Documentation.Updater
{
return AppendFullTypeName (buf, type, context);
}
- return AppendGenericType (buf, type, context);
+ return AppendGenericType (buf, type, context, appendGeneric);
}
protected virtual StringBuilder AppendNamespace (StringBuilder buf, TypeReference type)
@@ -195,12 +203,12 @@ namespace Mono.Documentation.Updater
get { return new string[] { "<", ">" }; }
}
- protected virtual char NestedTypeSeparator
+ protected virtual string NestedTypeSeparator
{
- get { return '.'; }
+ get { return "."; }
}
- protected virtual StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, DynamicParserContext context)
+ protected virtual StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, DynamicParserContext context, bool appendGeneric = true)
{
List<TypeReference> decls = DocUtils.GetDeclaringTypes (
type is GenericInstanceType ? type.GetElementType () : type);
@@ -220,7 +228,7 @@ namespace Mono.Documentation.Updater
int ac = DocUtils.GetGenericArgumentCount (declDef);
int c = ac - prev;
prev = ac;
- if (c > 0)
+ if ( appendGeneric && c > 0)
{
buf.Append (GenericTypeContainer[0]);
var origState = MemberFormatterState;
@@ -298,7 +306,7 @@ namespace Mono.Documentation.Updater
public virtual string GetDeclaration (MemberReference mreference)
{
if (!IsSupported(mreference))
- return null;
+ return null;
return GetDeclaration (mreference.Resolve ());
}
@@ -428,7 +436,7 @@ namespace Mono.Documentation.Updater
return GetEventName (e);
}
- protected virtual string GetAttachedEventDeclaration(AttachedEventDefinition e)
+ protected virtual string GetAttachedEventDeclaration(Mono.Documentation.Util.AttachedEventDefinition e)
{
return $"see Add{e.Name}Handler, and Remove{e.Name}Handler";
}
@@ -442,6 +450,7 @@ namespace Mono.Documentation.Updater
public virtual bool IsSupported(MemberReference mref) => true;
+
protected static bool IsPublicEII (EventDefinition e)
{
bool isPublicEII = false;
@@ -464,5 +473,10 @@ namespace Mono.Documentation.Updater
{
return "\n";
}
+
+ protected string CamelCase(string name)
+ {
+ return Char.ToLowerInvariant(name[0]) + name.Substring(1);
+ }
}
} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs
index 54910763..e1a1bb8c 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs
@@ -101,7 +101,7 @@ namespace Mono.Documentation.Updater
return buf.Append (ArrayDelimeters[1]);
}
- protected override StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, DynamicParserContext context)
+ protected override StringBuilder AppendGenericType (StringBuilder buf, TypeReference type, DynamicParserContext context, bool appendGeneric = true)
{
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 6b7ae8ad..c108cb74 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/VBFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/VBFullMemberFormatter.cs
@@ -204,7 +204,7 @@ namespace Mono.Documentation.Updater
}
}
- protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, DynamicParserContext context)
+ protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, DynamicParserContext context, bool appendGeneric = true)
{
List<TypeReference> decls = DocUtils.GetDeclaringTypes(
type is GenericInstanceType ? type.GetElementType() : type);
@@ -344,7 +344,7 @@ namespace Mono.Documentation.Updater
if (buf.Length != 0)
buf.Append(" ");
bool isFunction = method.MethodReturnType.ReturnType.FullName != "System.Void";
- if (!IsOperator(method))
+ if (!DocUtils.IsOperator(method))
{
if (isFunction)
buf.Append("Function ");
@@ -380,7 +380,7 @@ namespace Mono.Documentation.Updater
return buf.Append(method.Name.Split('.').Last());
}
- if (IsOperator(method))
+ if (DocUtils.IsOperator(method))
{
// this is an operator
switch (method.Name)
@@ -847,10 +847,5 @@ namespace Mono.Documentation.Updater
{
return method.CustomAttributes.Any(i => i.AttributeType.FullName == "System.Runtime.CompilerServices.IteratorStateMachineAttribute");
}
-
- private bool IsOperator(MethodDefinition method)
- {
- return method.Name.StartsWith("op_", StringComparison.Ordinal);
- }
}
}
diff --git a/mdoc/Resources/monodoc-ecma.xsd b/mdoc/Resources/monodoc-ecma.xsd
index 9ba9597c..3ae49b62 100644
--- a/mdoc/Resources/monodoc-ecma.xsd
+++ b/mdoc/Resources/monodoc-ecma.xsd
@@ -43,6 +43,7 @@ add masterdoc support?
<xs:attribute name="src" type="xs:string" />
<xs:attribute name="subset" type="xs:string" />
<xs:attribute name="Value" type="xs:string" />
+ <xs:attribute name="Usage" type="xs:string" />
<xs:attribute name="version" type="xs:string" />
<xs:attribute name="tool" type="xs:string" />
<xs:attribute name="type" type="xs:string" />
@@ -465,6 +466,7 @@ add masterdoc support?
<xs:complexType>
<xs:attribute ref="Language" />
<xs:attribute ref="Value" />
+ <xs:attribute ref="Usage" />
</xs:complexType>
</xs:element>
@@ -962,7 +964,8 @@ add masterdoc support?
<xs:element name="TypeSignature">
<xs:complexType>
<xs:attribute ref="Language" use="required" />
- <xs:attribute ref="Value" use="required" />
+ <xs:attribute ref="Value"/>
+ <xs:attribute ref="Usage"/>
<xs:attribute ref="Maintainer" />
</xs:complexType>
</xs:element>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/Extensions.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/Extensions.xml
new file mode 100644
index 00000000..775e6dd4
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/Extensions.xml
@@ -0,0 +1,141 @@
+<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" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</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="Bar&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void Bar&lt;T&gt; (this Mono.DocTest.Generic.IFoo&lt;T&gt; self, string s);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar&lt;T&gt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt; self, string s) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="Mono.DocTest.Generic.IFoo&lt;T&gt;" RefType="this" />
+ <Parameter Name="s" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="s">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ForEach&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void ForEach&lt;T&gt; (this System.Collections.Generic.IEnumerable&lt;T&gt; self, Action&lt;T&gt; a);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach&lt;T&gt;(class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; self, class System.Action`1&lt;!!T&gt; a) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="System.Collections.Generic.IEnumerable&lt;T&gt;" RefType="this" />
+ <Parameter Name="a" Type="System.Action&lt;T&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ToDouble">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;double&gt; ToDouble (this System.Collections.Generic.IEnumerable&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;float64&gt; ToDouble(class System.Collections.Generic.IEnumerable`1&lt;int32&gt; list) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function toDouble(list)" Usage="var iEnumerable = Mono.DocTest.Generic.Extensions.toDouble(list)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;System.Double&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.IEnumerable&lt;System.Int32&gt;" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ToDouble&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static double ToDouble&lt;T&gt; (this T val) where T : Mono.DocTest.Generic.IFoo&lt;T&gt;;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble&lt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt;) T&gt;(!!T val) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <InterfaceName>Mono.DocTest.Generic.IFoo&lt;T&gt;</InterfaceName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="val" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="val">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ToEnumerable&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;T&gt; ToEnumerable&lt;T&gt; (this T self);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; ToEnumerable&lt;T&gt;(!!T self) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">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-javascript/Mono.DocTest.Generic/Func`2.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/Func`2.xml
new file mode 100644
index 00000000..2d8dcf09
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/Func`2.xml
@@ -0,0 +1,64 @@
+<Type Name="Func&lt;TArg,TRet&gt;" FullName="Mono.DocTest.Generic.Func&lt;TArg,TRet&gt;">
+ <TypeSignature Language="C#" Value="public delegate TRet Func&lt;in TArg,out TRet&gt;(TArg a) where TArg : Exception;" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Func`2&lt;(class System.Exception) - TArg, + TRet&gt; extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="TArg">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("arg!")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Constraints>
+ <ParameterAttribute>Contravariant</ParameterAttribute>
+ <BaseTypeName>System.Exception</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ <TypeParameter Name="TRet">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("ret!")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Constraints>
+ <ParameterAttribute>Covariant</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("method")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Parameters>
+ <Parameter Name="a" Type="TArg">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("arg-actual")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>TRet</ReturnType>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("return", Field=false)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </ReturnValue>
+ <Docs>
+ <typeparam name="TArg">To be added.</typeparam>
+ <typeparam name="TRet">To be added.</typeparam>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
new file mode 100644
index 00000000..dff4379a
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
@@ -0,0 +1,34 @@
+<Type Name="GenericBase&lt;U&gt;+FooEventArgs" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;+FooEventArgs">
+ <TypeSignature Language="C#" Value="public class GenericBase&lt;U&gt;.FooEventArgs : EventArgs" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/FooEventArgs&lt;U&gt; extends System.EventArgs" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.EventArgs</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public FooEventArgs ();" />
+ <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>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
new file mode 100644
index 00000000..acc10189
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
@@ -0,0 +1,20 @@
+<Type Name="GenericBase&lt;U&gt;+NestedCollection+Enumerator" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;+NestedCollection+Enumerator">
+ <TypeSignature Language="C#" Value="protected internal struct GenericBase&lt;U&gt;.NestedCollection.Enumerator" />
+ <TypeSignature Language="ILAsm" Value=".class nested protected sequential ansi sealed beforefieldinit GenericBase`1/NestedCollection/Enumerator&lt;U&gt; extends System.ValueType" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members />
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
new file mode 100644
index 00000000..e396bd2d
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
@@ -0,0 +1,34 @@
+<Type Name="GenericBase&lt;U&gt;+NestedCollection" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;+NestedCollection">
+ <TypeSignature Language="C#" Value="public class GenericBase&lt;U&gt;.NestedCollection" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/NestedCollection&lt;U&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <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 NestedCollection ();" />
+ <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>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1.xml
new file mode 100644
index 00000000..54f5e031
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/GenericBase`1.xml
@@ -0,0 +1,145 @@
+<Type Name="GenericBase&lt;U&gt;" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;">
+ <TypeSignature Language="C#" Value="public class GenericBase&lt;U&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit GenericBase`1&lt;U&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public GenericBase ();" />
+ <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="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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>U</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="S">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("S")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="genericParameter" Type="S" />
+ </Parameters>
+ <Docs>
+ <typeparam name="S">To be added.</typeparam>
+ <param name="genericParameter">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ConstField1">
+ <MemberSignature Language="C#" Value="public const int ConstField1;" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal int32 ConstField1" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Action&lt;Mono.DocTest.Generic.MyList&lt;U&gt;,Mono.DocTest.Generic.MyList&lt;U&gt;+Helper&lt;U,U&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.EventHandler&lt;Mono.DocTest.Generic.GenericBase&lt;U&gt;+FooEventArgs&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>U</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="Mono.DocTest.Generic.GenericBase&lt;U&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="StaticField1">
+ <MemberSignature Language="C#" Value="public static readonly Mono.DocTest.Generic.GenericBase&lt;U&gt; StaticField1;" />
+ <MemberSignature Language="ILAsm" Value=".field public static initonly class Mono.DocTest.Generic.GenericBase`1&lt;!U&gt; StaticField1" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Generic.GenericBase&lt;U&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/IFoo`1.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/IFoo`1.xml
new file mode 100644
index 00000000..834141db
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/IFoo`1.xml
@@ -0,0 +1,45 @@
+<Type Name="IFoo&lt;T&gt;" FullName="Mono.DocTest.Generic.IFoo&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public interface IFoo&lt;T&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IFoo`1&lt;T&gt;" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Interfaces />
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>T</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="t" Type="T" />
+ <Parameter Name="u" Type="U" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="t">To be added.</param>
+ <param name="u">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-javascript/Mono.DocTest.Generic/MyList`1+Helper`2.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/MyList`1+Helper`2.xml
new file mode 100644
index 00000000..2f389db3
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/MyList`1+Helper`2.xml
@@ -0,0 +1,61 @@
+<Type Name="MyList&lt;T&gt;+Helper&lt;U,V&gt;" FullName="Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;">
+ <TypeSignature Language="C#" Value="public class MyList&lt;T&gt;.Helper&lt;U,V&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit MyList`1/Helper`2&lt;T, U, V&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Helper ();" />
+ <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="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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="T" />
+ <Parameter Name="b" Type="U" />
+ <Parameter Name="c" Type="V" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <param name="c">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-javascript/Mono.DocTest.Generic/MyList`1.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/MyList`1.xml
new file mode 100644
index 00000000..e6dfb9c6
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/MyList`1.xml
@@ -0,0 +1,205 @@
+<Type Name="MyList&lt;T&gt;" FullName="Mono.DocTest.Generic.MyList&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public class MyList&lt;T&gt; : Mono.DocTest.Generic.GenericBase&lt;T&gt;, System.Collections.Generic.IEnumerable&lt;int[]&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`1&lt;T&gt; extends Mono.DocTest.Generic.GenericBase`1&lt;!T&gt; implements class System.Collections.Generic.IEnumerable`1&lt;int32[]&gt;, class System.Collections.IEnumerable" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Type Parameter!")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>Mono.DocTest.Generic.GenericBase&lt;T&gt;</BaseTypeName>
+ <BaseTypeArguments>
+ <BaseTypeArgument TypeParamName="U">T</BaseTypeArgument>
+ </BaseTypeArguments>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IEnumerable&lt;System.Int32[]&gt;</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyList ();" />
+ <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="GetEnumerator">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerator&lt;int[]&gt; GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1&lt;int32[]&gt; GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.IEnumerable`1.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerator&lt;System.Int32[]&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetHelper&lt;U,V&gt;">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList&lt;T&gt;.Helper&lt;U,V&gt; GetHelper&lt;U,V&gt; ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!T, !!U, !!V&gt; GetHelper&lt;U, V&gt;() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="t" Type="T" />
+ <Parameter Name="u" Type="U" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="t">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="t" Type="T&amp;" RefType="ref" />
+ <Parameter Name="u" Type="U&amp;" RefType="ref" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="t">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
+ <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerable.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.IEnumerator</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="t" Type="T" />
+ </Parameters>
+ <Docs>
+ <param name="t">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="helper" Type="Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <param name="helper">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-javascript/Mono.DocTest.Generic/MyList`2.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/MyList`2.xml
new file mode 100644
index 00000000..f5fe4f1c
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest.Generic/MyList`2.xml
@@ -0,0 +1,428 @@
+<Type Name="MyList&lt;A,B&gt;" FullName="Mono.DocTest.Generic.MyList&lt;A,B&gt;">
+ <TypeSignature Language="C#" Value="public class MyList&lt;A,B&gt; : Mono.DocTest.Generic.GenericBase&lt;System.Collections.Generic.Dictionary&lt;A,B&gt;&gt;, Mono.DocTest.Generic.IFoo&lt;A&gt;, System.Collections.Generic.ICollection&lt;A&gt;, System.Collections.Generic.IEnumerable&lt;A&gt;, System.Collections.Generic.IEnumerator&lt;A&gt; where A : class, IList&lt;B&gt;, new() where B : class, A" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`2&lt;class .ctor (class System.Collections.Generic.IList`1&lt;!B&gt;) A, class (!A) B&gt; extends Mono.DocTest.Generic.GenericBase`1&lt;class System.Collections.Generic.Dictionary`2&lt;!A, !B&gt;&gt; implements class Mono.DocTest.Generic.IFoo`1&lt;!A&gt;, class System.Collections.Generic.ICollection`1&lt;!A&gt;, class System.Collections.Generic.IEnumerable`1&lt;!A&gt;, class System.Collections.Generic.IEnumerator`1&lt;!A&gt;, class System.Collections.IEnumerable, class System.Collections.IEnumerator, class System.IDisposable" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="A">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ <InterfaceName>System.Collections.Generic.IList&lt;B&gt;</InterfaceName>
+ </Constraints>
+ </TypeParameter>
+ <TypeParameter Name="B">
+ <Constraints>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ <BaseTypeName>A</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>Mono.DocTest.Generic.GenericBase&lt;System.Collections.Generic.Dictionary&lt;A,B&gt;&gt;</BaseTypeName>
+ <BaseTypeArguments>
+ <BaseTypeArgument TypeParamName="U">System.Collections.Generic.Dictionary&lt;A,B&gt;</BaseTypeArgument>
+ </BaseTypeArguments>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>Mono.DocTest.Generic.IFoo&lt;A&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.ICollection&lt;A&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IEnumerable&lt;A&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IEnumerator&lt;A&gt;</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <typeparam name="A">To be added.</typeparam>
+ <typeparam name="B">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyList ();" />
+ <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="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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="array" Type="A[]" />
+ <Parameter Name="arrayIndex" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="array">To be added.</param>
+ <param name="arrayIndex">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Count">
+ <MemberSignature Language="C#" Value="public int Count { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Count" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.ICollection`1.Count</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Current">
+ <MemberSignature Language="C#" Value="public A Current { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance !A Current" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.IEnumerator`1.Current</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>A</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dispose">
+ <MemberSignature Language="C#" Value="public void Dispose ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Dispose() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.IDisposable.Dispose</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Foo">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.KeyValuePair&lt;System.Collections.Generic.IEnumerable&lt;A&gt;,System.Collections.Generic.IEnumerable&lt;B&gt;&gt; Foo ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.KeyValuePair`2&lt;class System.Collections.Generic.IEnumerable`1&lt;!A&gt;, class System.Collections.Generic.IEnumerable`1&lt;!B&gt;&gt; Foo() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.KeyValuePair&lt;System.Collections.Generic.IEnumerable&lt;A&gt;,System.Collections.Generic.IEnumerable&lt;B&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetEnumerator">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.List&lt;A&gt;.Enumerator GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.List`1/Enumerator&lt;!A&gt; GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.List&lt;A&gt;+Enumerator</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:Mono.DocTest.Generic.IFoo`1.Method``1(`0,``0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>A</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="a" Type="A" />
+ <Parameter Name="u" Type="U" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="a">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MoveNext">
+ <MemberSignature Language="C#" Value="public bool MoveNext ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool MoveNext() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerator.MoveNext</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Reset">
+ <MemberSignature Language="C#" Value="public void Reset ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Reset() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerator.Reset</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Add(`0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="item" Type="A" />
+ </Parameters>
+ <Docs>
+ <param name="item">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Clear">
+ <MemberSignature Language="C#" Value="void ICollection&lt;A&gt;.Clear ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection&lt;A&gt;.Clear() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Clear</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Contains(`0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="item" Type="A" />
+ </Parameters>
+ <Docs>
+ <param name="item">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.IsReadOnly">
+ <MemberSignature Language="C#" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.IsReadOnly { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance bool System.Collections.Generic.ICollection&lt;A&gt;.IsReadOnly" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.ICollection`1.IsReadOnly</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Remove(`0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="item" Type="A" />
+ </Parameters>
+ <Docs>
+ <param name="item">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator">
+ <MemberSignature Language="C#" Value="System.Collections.Generic.IEnumerator&lt;A&gt; IEnumerable&lt;A&gt;.GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1&lt;!A&gt; System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.IEnumerable`1.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerator&lt;A&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.IEnumerator&lt;A&gt;.Current">
+ <MemberSignature Language="C#" Value="A System.Collections.Generic.IEnumerator&lt;A&gt;.Current { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance !A System.Collections.Generic.IEnumerator&lt;A&gt;.Current" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.IEnumerator`1.Current</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>A</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
+ <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerable.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.IEnumerator</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.IEnumerator.Current">
+ <MemberSignature Language="C#" Value="object System.Collections.IEnumerator.Current { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance object System.Collections.IEnumerator.Current" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.IEnumerator.Current</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Object</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/Color.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/Color.xml
new file mode 100644
index 00000000..df59b117
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/Color.xml
@@ -0,0 +1,78 @@
+<Type Name="Color" FullName="Mono.DocTest.Color">
+ <TypeSignature Language="C#" Value="public enum Color" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Color extends System.Enum" />
+ <TypeSignature Language="JavaScript" Usage="var value = Mono.DocTest.Color.red" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Enum</BaseTypeName>
+ </Base>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnotherGreen">
+ <MemberSignature Language="C#" Value="AnotherGreen" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color AnotherGreen = int32(2)" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>2</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="Blue">
+ <MemberSignature Language="C#" Value="Blue" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Blue = int32(1)" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>1</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="Green">
+ <MemberSignature Language="C#" Value="Green" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Green = int32(2)" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>2</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="Red">
+ <MemberSignature Language="C#" Value="Red" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Red = int32(0)" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>0</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/D.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/D.xml
new file mode 100644
index 00000000..65536f5d
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/D.xml
@@ -0,0 +1,24 @@
+<Type Name="D" FullName="Mono.DocTest.D">
+ <TypeSignature Language="C#" Value="public delegate dynamic D(Func&lt;string,dynamic,object&gt; value);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed D extends System.MulticastDelegate" />
+ <TypeSignature Language="JavaScript" Usage="var dHandler = function(value){&#xA;/* Your code */&#xA;}" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="value" Type="System.Func&lt;System.String,System.Object,System.Object&gt;" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Object</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/DocAttribute.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/DocAttribute.xml
new file mode 100644
index 00000000..92503844
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/DocAttribute.xml
@@ -0,0 +1,103 @@
+<Type Name="DocAttribute" FullName="Mono.DocTest.DocAttribute">
+ <TypeSignature Language="C#" Value="public class DocAttribute : Attribute" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit DocAttribute extends System.Attribute" />
+ <TypeSignature Language="JavaScript" Value="function DocAttribute(docs)" Usage="var docAttribute = new DocAttribute(docs);" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Attribute</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.AttributeUsage(System.AttributeTargets.All)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <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="JavaScript" Value="function DocAttribute(docs)" Usage="var docAttribute = new DocAttribute(docs);" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="docs" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <param name="docs">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Field">
+ <MemberSignature Language="C#" Value="public bool Field;" />
+ <MemberSignature Language="ILAsm" Value=".field public bool Field" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="FlagsEnum">
+ <MemberSignature Language="C#" Value="public ConsoleModifiers FlagsEnum;" />
+ <MemberSignature Language="ILAsm" Value=".field public valuetype System.ConsoleModifiers FlagsEnum" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.ConsoleModifiers</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="NonFlagsEnum">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Color NonFlagsEnum;" />
+ <MemberSignature Language="ILAsm" Value=".field public valuetype Mono.DocTest.Color NonFlagsEnum" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Property">
+ <MemberSignature Language="C#" Value="public Type Property { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class System.Type Property" />
+ <MemberSignature Language="JavaScript" Usage="var type = docAttribute.property;&#xA;docAttribute.property = type;" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Type</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/DocValueType.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/DocValueType.xml
new file mode 100644
index 00000000..9234cc6f
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/DocValueType.xml
@@ -0,0 +1,58 @@
+<Type Name="DocValueType" FullName="Mono.DocTest.DocValueType">
+ <TypeSignature Language="C#" Value="public struct DocValueType : Mono.DocTest.IProcess" />
+ <TypeSignature Language="ILAsm" Value=".class public sequential ansi sealed beforefieldinit DocValueType extends System.ValueType implements class Mono.DocTest.IProcess" />
+ <TypeSignature Language="JavaScript" Usage="var docValueType = {&#xA;total : /* Your value */&#xA;}" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>Mono.DocTest.IProcess</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <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="JavaScript" Value="function m(i)" Usage="docValueType.m(i)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="total">
+ <MemberSignature Language="C#" Value="public int total;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32 total" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/IProcess.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/IProcess.xml
new file mode 100644
index 00000000..2a35c4e7
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/IProcess.xml
@@ -0,0 +1,14 @@
+<Type Name="IProcess" FullName="Mono.DocTest.IProcess">
+ <TypeSignature Language="C#" Value="public interface IProcess" />
+ <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IProcess" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members />
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/UseLists.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/UseLists.xml
new file mode 100644
index 00000000..e02156b4
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/UseLists.xml
@@ -0,0 +1,173 @@
+<Type Name="UseLists" FullName="Mono.DocTest.UseLists">
+ <TypeSignature Language="C#" Value="public class UseLists" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit UseLists extends System.Object" />
+ <TypeSignature Language="JavaScript" Value="function UseLists()" Usage="var useLists = new UseLists();" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</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 UseLists ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="JavaScript" Value="function UseLists()" Usage="var useLists = new UseLists();" />
+ <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="GetValues&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList&lt;T&gt; GetValues&lt;T&gt; (T value) where T : struct;" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1&lt;!!T&gt; GetValues&lt;struct .ctor (class System.ValueType) T&gt;(!!T value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Generic.MyList&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>NotNullableValueTypeConstraint</ParameterAttribute>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="value" Type="T" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process">
+ <MemberSignature Language="C#" Value="public void Process (Mono.DocTest.Generic.MyList&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class Mono.DocTest.Generic.MyList`1&lt;int32&gt; list) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function process(list)" Usage="useLists.process(list)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="Mono.DocTest.Generic.MyList&lt;System.Int32&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process">
+ <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1&lt;int32&gt; list) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function process(list)" Usage="useLists.process(list)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.List&lt;System.Int32&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process">
+ <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List&lt;Predicate&lt;int&gt;&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1&lt;class System.Predicate`1&lt;int32&gt;&gt; list) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function process(list)" Usage="useLists.process(list)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.List&lt;System.Predicate&lt;System.Int32&gt;&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public void Process&lt;T&gt; (System.Collections.Generic.List&lt;Predicate&lt;T&gt;&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process&lt;T&gt;(class System.Collections.Generic.List`1&lt;class System.Predicate`1&lt;!!T&gt;&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.List&lt;System.Predicate&lt;T&gt;&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="helper" Type="Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <param name="helper">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-javascript/Mono.DocTest/Widget+Del.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+Del.xml
new file mode 100644
index 00000000..e3ad767a
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+Del.xml
@@ -0,0 +1,22 @@
+<Type Name="Widget+Del" FullName="Mono.DocTest.Widget+Del">
+ <TypeSignature Language="C#" Value="public delegate void Widget.Del(int i);" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Widget/Del extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+Direction.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+Direction.xml
new file mode 100644
index 00000000..e563afea
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+Direction.xml
@@ -0,0 +1,82 @@
+<Type Name="Widget+Direction" FullName="Mono.DocTest.Widget+Direction">
+ <TypeSignature Language="C#" Value="protected internal enum Widget.Direction" />
+ <TypeSignature Language="ILAsm" Value=".class nested protected auto ansi sealed Widget/Direction extends System.Enum" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Enum</BaseTypeName>
+ </Base>
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Flags</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="East">
+ <MemberSignature Language="C#" Value="East" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction East = int32(2)" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>2</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="North">
+ <MemberSignature Language="C#" Value="North" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction North = int32(0)" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>0</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="South">
+ <MemberSignature Language="C#" Value="South" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction South = int32(1)" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>1</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="West">
+ <MemberSignature Language="C#" Value="West" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction West = int32(3)" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>3</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+IMenuItem.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+IMenuItem.xml
new file mode 100644
index 00000000..55790785
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+IMenuItem.xml
@@ -0,0 +1,47 @@
+<Type Name="Widget+IMenuItem" FullName="Mono.DocTest.Widget+IMenuItem">
+ <TypeSignature Language="C#" Value="public interface Widget.IMenuItem" />
+ <TypeSignature Language="ILAsm" Value=".class nested public interface auto ansi abstract Widget/IMenuItem" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="A">
+ <MemberSignature Language="C#" Value="public void A ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void A() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="B">
+ <MemberSignature Language="C#" Value="public int B { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 B" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
new file mode 100644
index 00000000..937f51a6
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
@@ -0,0 +1,31 @@
+<Type Name="Widget+NestedClass+Double+Triple+Quadruple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple+Quadruple">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple.Quadruple" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple/Quadruple extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</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 Quadruple ();" />
+ <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>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double+Triple.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
new file mode 100644
index 00000000..5726eade
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
@@ -0,0 +1,31 @@
+<Type Name="Widget+NestedClass+Double+Triple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</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 Triple ();" />
+ <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>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double.xml
new file mode 100644
index 00000000..04d7bb44
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass+Double.xml
@@ -0,0 +1,31 @@
+<Type Name="Widget+NestedClass+Double" FullName="Mono.DocTest.Widget+NestedClass+Double">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</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 Double ();" />
+ <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>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass.xml
new file mode 100644
index 00000000..432b7c64
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass.xml
@@ -0,0 +1,65 @@
+<Type Name="Widget+NestedClass" FullName="Mono.DocTest.Widget+NestedClass">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</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 NestedClass ();" />
+ <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="M">
+ <MemberSignature Language="C#" Value="public void M (int i);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="value">
+ <MemberSignature Language="C#" Value="public int value;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32 value" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass`1.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass`1.xml
new file mode 100644
index 00000000..56114c56
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget+NestedClass`1.xml
@@ -0,0 +1,69 @@
+<Type Name="Widget+NestedClass&lt;T&gt;" FullName="Mono.DocTest.Widget+NestedClass&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass&lt;T&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass`1&lt;T&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public NestedClass ();" />
+ <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="M">
+ <MemberSignature Language="C#" Value="public void M (int i);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="value">
+ <MemberSignature Language="C#" Value="public int value;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32 value" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget.xml
new file mode 100644
index 00000000..4a8fa4b4
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/Mono.DocTest/Widget.xml
@@ -0,0 +1,881 @@
+<Type Name="Widget" FullName="Mono.DocTest.Widget">
+ <TypeSignature Language="C#" Value="public class Widget : Mono.DocTest.IProcess" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Widget extends System.Object implements class Mono.DocTest.IProcess" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>Mono.DocTest.IProcess</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Widget ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="JavaScript" Value="function Widget()" Usage="var widget = new Widget();" />
+ <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=".ctor">
+ <MemberSignature Language="C#" Value="public Widget (Converter&lt;string,string&gt; c);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class System.Converter`2&lt;string, string&gt; c) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function Widget(c)" Usage="var widget = new Widget(c);" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="c" Type="System.Converter&lt;System.String,System.String&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="c">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="JavaScript" Value="function Widget(s)" Usage="var widget = new Widget(s);" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="s" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <param name="s">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="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;" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Del event")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>add: Mono.DocTest.Doc("Del add accessor")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>remove: Mono.DocTest.Doc("Del remove accessor")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Del</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Del</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="array1">
+ <MemberSignature Language="C#" Value="public long[] array1;" />
+ <MemberSignature Language="ILAsm" Value=".field public int64[] array1" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int64[]</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="array2">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Widget[,] array2;" />
+ <MemberSignature Language="ILAsm" Value=".field public class Mono.DocTest.Widget[,] array2" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget[,]</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="classCtorError">
+ <MemberSignature Language="C#" Value="public static readonly string[] classCtorError;" />
+ <MemberSignature Language="ILAsm" Value=".field public static initonly string[] classCtorError" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String[]</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="JavaScript" Value="function default(a, b)" Usage="widget.default(a, b)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="System.Int32" />
+ <Parameter Name="b" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Default">
+ <MemberSignature Language="C#" Value="public void Default (string a = &quot;a&quot;, char b = 'b');" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Default(string a, char b) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function default(a, b)" Usage="widget.default(a, b)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="System.String" />
+ <Parameter Name="b" Type="System.Char" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="defaultColor">
+ <MemberSignature Language="C#" Value="protected static Mono.DocTest.Color defaultColor;" />
+ <MemberSignature Language="ILAsm" Value=".field family static valuetype Mono.DocTest.Color defaultColor" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="JavaScript" Value="function dynamic0(a, b)" Usage="var object = widget.dynamic0(a, b)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Object</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="System.Object" />
+ <Parameter Name="b" Type="System.Object" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic1">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.Dictionary&lt;dynamic,string&gt; Dynamic1 (System.Collections.Generic.Dictionary&lt;dynamic,string&gt; value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Collections.Generic.Dictionary`2&lt;object, string&gt; Dynamic1(class System.Collections.Generic.Dictionary`2&lt;object, string&gt; value) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function dynamic1(value)" Usage="var dictionary = widget.dynamic1(value)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.Dictionary&lt;System.Object,System.String&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Collections.Generic.Dictionary&lt;System.Object,System.String&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic2">
+ <MemberSignature Language="C#" Value="public Func&lt;string,dynamic&gt; Dynamic2 (Func&lt;string,dynamic&gt; value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Func`2&lt;string, object&gt; Dynamic2(class System.Func`2&lt;string, object&gt; value) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function dynamic2(value)" Usage="var func = widget.dynamic2(value)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.String,System.Object&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Func&lt;System.String,System.Object&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic3">
+ <MemberSignature Language="C#" Value="public Func&lt;Func&lt;string,dynamic&gt;,Func&lt;dynamic,string&gt;&gt; Dynamic3 (Func&lt;Func&lt;string,dynamic&gt;,Func&lt;dynamic,string&gt;&gt; value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Func`2&lt;class System.Func`2&lt;string, object&gt;, class System.Func`2&lt;object, string&gt;&gt; Dynamic3(class System.Func`2&lt;class System.Func`2&lt;string, object&gt;, class System.Func`2&lt;object, string&gt;&gt; value) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function dynamic3(value)" Usage="var func = widget.dynamic3(value)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Func&lt;System.String,System.Object&gt;,System.Func&lt;System.Object,System.String&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Func&lt;System.Func&lt;System.String,System.Object&gt;,System.Func&lt;System.Object,System.String&gt;&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="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;" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Obsolete("why not")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Object&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="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;" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Object&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="DynamicF">
+ <MemberSignature Language="C#" Value="public Func&lt;Func&lt;string,dynamic,string&gt;,Func&lt;dynamic,Func&lt;dynamic&gt;,string&gt;&gt; DynamicF;" />
+ <MemberSignature Language="ILAsm" Value=".field public 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; DynamicF" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Func&lt;System.String,System.Object,System.String&gt;,System.Func&lt;System.Object,System.Func&lt;System.Object&gt;,System.String&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="JavaScript" Usage="var func = widget.dynamicP;" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Func&lt;System.String,System.Object,System.String&gt;,System.Func&lt;System.Object,System.Func&lt;System.Object&gt;,System.String&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Height">
+ <MemberSignature Language="C#" Value="protected long Height { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int64 Height" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Height property")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Int64</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Item">
+ <MemberSignature Language="C#" Value="public int this[int i] { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Item(int32)" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Item property")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>set: Mono.DocTest.Doc("Item property set accessor")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Item">
+ <MemberSignature Language="C#" Value="public int this[string s, int i] { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Item(string, int32)" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="s" Type="System.String" />
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="s">To be added.</param>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M0">
+ <MemberSignature Language="C#" Value="public static void M0 ();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void M0() cil managed" />
+ <MemberSignature Language="JavaScript" Value="function m0()" Usage="Mono.DocTest.Widget.m0()" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M1">
+ <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, [out] float32&amp; f, valuetype Mono.DocTest.DocValueType&amp; v) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("normal DocAttribute", Field=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("return:DocAttribute", Property=typeof(Mono.DocTest.Widget))</AttributeName>
+ </Attribute>
+ </Attributes>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="c" Type="System.Char">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("c", FlagsEnum=System.ConsoleModifiers.Alt | System.ConsoleModifiers.Control)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ <Parameter Name="f" Type="System.Single&amp;" RefType="out">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("f", NonFlagsEnum=Mono.DocTest.Color.Red)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ <Parameter Name="v" Type="Mono.DocTest.DocValueType&amp;" RefType="ref">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("v")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ </Parameters>
+ <Docs>
+ <param name="c">To be added.</param>
+ <param name="f">To be added.</param>
+ <param name="v">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="JavaScript" Value="function m2(x1, x2, x3)" Usage="widget.m2(x1, x2, x3)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x1" Type="System.Int16[]" />
+ <Parameter Name="x2" Type="System.Int32[,]" />
+ <Parameter Name="x3" Type="System.Int64[][]" />
+ </Parameters>
+ <Docs>
+ <param name="x1">To be added.</param>
+ <param name="x2">To be added.</param>
+ <param name="x3">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="JavaScript" Value="function m3(x3, x4)" Usage="widget.m3(x3, x4)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x3" Type="System.Int64[][]" />
+ <Parameter Name="x4" Type="Mono.DocTest.Widget[,,][]" />
+ </Parameters>
+ <Docs>
+ <param name="x3">To be added.</param>
+ <param name="x4">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M4">
+ <MemberSignature Language="C#" Value="protected void M4 (char* pc, Mono.DocTest.Color** ppf);" />
+ <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M4(char* pc, valuetype Mono.DocTest.Color** ppf) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function m4(pc, ppf)" Usage="widget.m4(pc, ppf)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="pc" Type="System.Char*" />
+ <Parameter Name="ppf" Type="Mono.DocTest.Color**" />
+ </Parameters>
+ <Docs>
+ <param name="pc">To be added.</param>
+ <param name="ppf">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="JavaScript" Value="function m5(pv, pd)" Usage="widget.m5(pv, pd)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="pv" Type="System.Void*" />
+ <Parameter Name="pd" Type="System.Double*[,][]" />
+ </Parameters>
+ <Docs>
+ <param name="pv">To be added.</param>
+ <param name="pd">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M6">
+ <MemberSignature Language="C#" Value="protected void M6 (int i, params object[] args);" />
+ <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function m6(i, args)" Usage="widget.m6(i, args)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ <Parameter Name="args" Type="System.Object[]">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.ParamArray</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <param name="args">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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="JavaScript" Value="function m7(a)" Usage="widget.m7(a)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="Mono.DocTest.Widget+NestedClass+Double+Triple+Quadruple" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="message">
+ <MemberSignature Language="C#" Value="public string message;" />
+ <MemberSignature Language="ILAsm" Value=".field public string message" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="monthlyAverage">
+ <MemberSignature Language="C#" Value="protected internal readonly double monthlyAverage;" />
+ <MemberSignature Language="ILAsm" Value=".field familyorassembly initonly float64 monthlyAverage" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x1" Type="Mono.DocTest.Widget" />
+ <Parameter Name="x2" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x1">To be added.</param>
+ <param name="x2">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Division">
+ <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget op_Division;" />
+ <MemberSignature Language="ILAsm" Value=".field public static class Mono.DocTest.Widget op_Division" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int64</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="pCount">
+ <MemberSignature Language="C#" Value="public int* pCount;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32* pCount" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32*</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="PI">
+ <MemberSignature Language="C#" Value="protected internal const double PI = 3.14159;" />
+ <MemberSignature Language="ILAsm" Value=".field familyorassembly static literal float64 PI = (3.14159)" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <MemberValue>3.14159</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ppValues">
+ <MemberSignature Language="C#" Value="public float** ppValues;" />
+ <MemberSignature Language="ILAsm" Value=".field public float32** ppValues" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single**</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Width">
+ <MemberSignature Language="C#" Value="public int Width { get; protected set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Width" />
+ <MemberSignature Language="JavaScript" Usage="var int32 = widget.width;" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Width property")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>get: Mono.DocTest.Doc("Width get accessor")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>set: Mono.DocTest.Doc("Width set accessor")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="X">
+ <MemberSignature Language="C#" Value="protected internal short X { set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int16 X" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int16</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Y">
+ <MemberSignature Language="C#" Value="protected internal double Y { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance float64 Y" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/NoNamespace.xml b/mdoc/Test/en.expected-javascript/NoNamespace.xml
new file mode 100644
index 00000000..96f648fb
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/NoNamespace.xml
@@ -0,0 +1,33 @@
+<Type Name="NoNamespace" FullName="NoNamespace">
+ <TypeSignature Language="C#" Value="public class NoNamespace" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NoNamespace extends System.Object" />
+ <TypeSignature Language="JavaScript" Value="function NoNamespace()" Usage="var noNamespace = new NoNamespace();" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</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 NoNamespace ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="JavaScript" Value="function NoNamespace()" Usage="var noNamespace = new NoNamespace();" />
+ <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>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/System/Action`1.xml b/mdoc/Test/en.expected-javascript/System/Action`1.xml
new file mode 100644
index 00000000..7560590f
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/System/Action`1.xml
@@ -0,0 +1,26 @@
+<Type Name="Action&lt;T&gt;" FullName="System.Action&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public delegate void Action&lt;T&gt;(T obj);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Action`1&lt;T&gt; extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="obj" Type="T" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="obj">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/System/Array.xml b/mdoc/Test/en.expected-javascript/System/Array.xml
new file mode 100644
index 00000000..13ba92bd
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/System/Array.xml
@@ -0,0 +1,110 @@
+<Type Name="Array" FullName="System.Array">
+ <TypeSignature Language="C#" Value="public class Array" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Array extends System.Object" />
+ <TypeSignature Language="JavaScript" Value="function Array()" Usage="var array = new Array();" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</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 Array ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="JavaScript" Value="function Array()" Usage="var array = new Array();" />
+ <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="AsReadOnly&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static System.Collections.ObjectModel.ReadOnlyCollection&lt;T&gt; AsReadOnly&lt;T&gt; (T[] array);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.ObjectModel.ReadOnlyCollection`1&lt;!!T&gt; AsReadOnly&lt;T&gt;(!!T[] array) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.ObjectModel.ReadOnlyCollection&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="array" Type="T[]" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="array">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
+ <MemberSignature Language="C#" Value="public static TOutput[] ConvertAll&lt;TInput,TOutput&gt; (TInput[] array, Converter&lt;TInput,TOutput&gt; converter);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TOutput[] ConvertAll&lt;TInput, TOutput&gt;(!!TInput[] array, class System.Converter`2&lt;!!TInput, !!TOutput&gt; converter) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>TOutput[]</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="TInput" />
+ <TypeParameter Name="TOutput" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="array" Type="TInput[]" />
+ <Parameter Name="converter" Type="System.Converter&lt;TInput,TOutput&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="TInput">To be added.</typeparam>
+ <typeparam name="TOutput">To be added.</typeparam>
+ <param name="array">To be added.</param>
+ <param name="converter">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <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" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="array" Type="T[]&amp;" RefType="ref" />
+ <Parameter Name="newSize" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="array">To be added.</param>
+ <param name="newSize">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-javascript/System/AsyncCallback.xml b/mdoc/Test/en.expected-javascript/System/AsyncCallback.xml
new file mode 100644
index 00000000..d0869234
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/System/AsyncCallback.xml
@@ -0,0 +1,23 @@
+<Type Name="AsyncCallback" FullName="System.AsyncCallback">
+ <TypeSignature Language="C#" Value="public delegate void AsyncCallback(IAsyncResult ar);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed AsyncCallback extends System.MulticastDelegate" />
+ <TypeSignature Language="JavaScript" Usage="var asyncCallbackHandler = function(ar){&#xA;/* Your code */&#xA;}" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="ar" Type="System.IAsyncResult" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="ar">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/System/Environment+SpecialFolder.xml b/mdoc/Test/en.expected-javascript/System/Environment+SpecialFolder.xml
new file mode 100644
index 00000000..6e6a9408
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/System/Environment+SpecialFolder.xml
@@ -0,0 +1,16 @@
+<Type Name="Environment+SpecialFolder" FullName="System.Environment+SpecialFolder">
+ <TypeSignature Language="C#" Value="public enum Environment.SpecialFolder" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Environment/SpecialFolder extends System.Enum" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Enum</BaseTypeName>
+ </Base>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members />
+</Type>
diff --git a/mdoc/Test/en.expected-javascript/System/Environment.xml b/mdoc/Test/en.expected-javascript/System/Environment.xml
new file mode 100644
index 00000000..3a82d793
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/System/Environment.xml
@@ -0,0 +1,71 @@
+<Type Name="Environment" FullName="System.Environment">
+ <TypeSignature Language="C#" Value="public static class Environment" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Environment extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</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="GetFolderPath">
+ <MemberSignature Language="C#" Value="public static string GetFolderPath (Environment.SpecialFolder folder);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig string GetFolderPath(valuetype System.Environment/SpecialFolder folder) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function getFolderPath(folder)" Usage="var string = System.Environment.getFolderPath(folder)" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="folder" Type="System.Environment+SpecialFolder" />
+ </Parameters>
+ <Docs>
+ <param name="folder">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="IsAligned&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static bool IsAligned&lt;T&gt; (this T[] vect, int index) where T : struct;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsAligned&lt;struct .ctor (class System.ValueType) T&gt;(!!T[] vect, int32 index) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>NotNullableValueTypeConstraint</ParameterAttribute>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="vect" Type="T[]" RefType="this" />
+ <Parameter Name="index" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="vect">To be added.</param>
+ <param name="index">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-javascript/index.xml b/mdoc/Test/en.expected-javascript/index.xml
new file mode 100644
index 00000000..4839cbb1
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/index.xml
@@ -0,0 +1,223 @@
+<Overview>
+ <Assemblies>
+ <Assembly Name="DocTest" 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="">
+ <Type Name="NoNamespace" Kind="Class" />
+ </Namespace>
+ <Namespace Name="Mono.DocTest">
+ <Type Name="Color" Kind="Enumeration" />
+ <Type Name="D" Kind="Delegate" />
+ <Type Name="DocAttribute" Kind="Class" />
+ <Type Name="DocValueType" Kind="Structure" />
+ <Type Name="IProcess" Kind="Interface" />
+ <Type Name="UseLists" Kind="Class" />
+ <Type Name="Widget" Kind="Class" />
+ <Type Name="Widget+Del" Kind="Delegate" />
+ <Type Name="Widget+Direction" Kind="Enumeration" />
+ <Type Name="Widget+IMenuItem" Kind="Interface" />
+ <Type Name="Widget+NestedClass" Kind="Class" />
+ <Type Name="Widget+NestedClass`1" DisplayName="Widget+NestedClass&lt;T&gt;" Kind="Class" />
+ <Type Name="Widget+NestedClass+Double" Kind="Class" />
+ <Type Name="Widget+NestedClass+Double+Triple" Kind="Class" />
+ <Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
+ </Namespace>
+ <Namespace Name="Mono.DocTest.Generic">
+ <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" />
+ <Type Name="GenericBase`1+FooEventArgs" DisplayName="GenericBase&lt;U&gt;+FooEventArgs" Kind="Class" />
+ <Type Name="GenericBase`1+NestedCollection" DisplayName="GenericBase&lt;U&gt;+NestedCollection" Kind="Class" />
+ <Type Name="GenericBase`1+NestedCollection+Enumerator" DisplayName="GenericBase&lt;U&gt;+NestedCollection+Enumerator" Kind="Structure" />
+ <Type Name="IFoo`1" DisplayName="IFoo&lt;T&gt;" Kind="Interface" />
+ <Type Name="MyList`1" DisplayName="MyList&lt;T&gt;" Kind="Class" />
+ <Type Name="MyList`1+Helper`2" DisplayName="MyList&lt;T&gt;+Helper&lt;U,V&gt;" Kind="Class" />
+ <Type Name="MyList`2" DisplayName="MyList&lt;A,B&gt;" Kind="Class" />
+ </Namespace>
+ <Namespace Name="System">
+ <Type Name="Action`1" DisplayName="Action&lt;T&gt;" Kind="Delegate" />
+ <Type Name="Array" Kind="Class" />
+ <Type Name="AsyncCallback" Kind="Delegate" />
+ <Type Name="Environment" Kind="Class" />
+ <Type Name="Environment+SpecialFolder" Kind="Enumeration" />
+ </Namespace>
+ </Types>
+ <Title>DocTest</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:Mono.DocTest.Generic.IFoo`1" />
+ </Targets>
+ <Member MemberName="Bar&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void Bar&lt;T&gt; (this Mono.DocTest.Generic.IFoo&lt;T&gt; self, string s);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar&lt;T&gt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt; self, string s) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="Mono.DocTest.Generic.IFoo&lt;T&gt;" RefType="this" />
+ <Parameter Name="s" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="s">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.Bar``1(Mono.DocTest.Generic.IFoo{``0},System.String)" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:System.Collections.Generic.IEnumerable`1" />
+ </Targets>
+ <Member MemberName="ForEach&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void ForEach&lt;T&gt; (this System.Collections.Generic.IEnumerable&lt;T&gt; self, Action&lt;T&gt; a);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach&lt;T&gt;(class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; self, class System.Action`1&lt;!!T&gt; a) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="System.Collections.Generic.IEnumerable&lt;T&gt;" RefType="this" />
+ <Parameter Name="a" Type="System.Action&lt;T&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ForEach``1(System.Collections.Generic.IEnumerable{``0},System.Action{``0})" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:System.Collections.Generic.IEnumerable`1" />
+ </Targets>
+ <Member MemberName="ToDouble">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;double&gt; ToDouble (this System.Collections.Generic.IEnumerable&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;float64&gt; ToDouble(class System.Collections.Generic.IEnumerable`1&lt;int32&gt; list) cil managed" />
+ <MemberSignature Language="JavaScript" Value="function toDouble(list)" Usage="var iEnumerable = Mono.DocTest.Generic.Extensions.toDouble(list)" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;System.Double&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.IEnumerable&lt;System.Int32&gt;" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ToDouble(System.Collections.Generic.IEnumerable{System.Int32})" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:Mono.DocTest.Generic.IFoo`1" />
+ </Targets>
+ <Member MemberName="ToDouble&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static double ToDouble&lt;T&gt; (this T val) where T : Mono.DocTest.Generic.IFoo&lt;T&gt;;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble&lt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt;) T&gt;(!!T val) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <InterfaceName>Mono.DocTest.Generic.IFoo&lt;T&gt;</InterfaceName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="val" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="val">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ToDouble``1(``0)" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="System.Object" />
+ </Targets>
+ <Member MemberName="ToEnumerable&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;T&gt; ToEnumerable&lt;T&gt; (this T self);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; ToEnumerable&lt;T&gt;(!!T self) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ToEnumerable``1(``0)" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:System.Array" />
+ </Targets>
+ <Member MemberName="IsAligned&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static bool IsAligned&lt;T&gt; (this T[] vect, int index) where T : struct;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsAligned&lt;struct .ctor (class System.ValueType) T&gt;(!!T[] vect, int32 index) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>NotNullableValueTypeConstraint</ParameterAttribute>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="vect" Type="T[]" RefType="this" />
+ <Parameter Name="index" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="vect">To be added.</param>
+ <param name="index">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="System.Environment" Member="M:System.Environment.IsAligned``1(``0[],System.Int32)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
+</Overview>
diff --git a/mdoc/Test/en.expected-javascript/ns-.xml b/mdoc/Test/en.expected-javascript/ns-.xml
new file mode 100644
index 00000000..36dfeb30
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/ns-.xml
@@ -0,0 +1,6 @@
+<Namespace Name="">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-javascript/ns-Mono.DocTest.Generic.xml b/mdoc/Test/en.expected-javascript/ns-Mono.DocTest.Generic.xml
new file mode 100644
index 00000000..0d3e7924
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/ns-Mono.DocTest.Generic.xml
@@ -0,0 +1,6 @@
+<Namespace Name="Mono.DocTest.Generic">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-javascript/ns-Mono.DocTest.xml b/mdoc/Test/en.expected-javascript/ns-Mono.DocTest.xml
new file mode 100644
index 00000000..96ab3e78
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/ns-Mono.DocTest.xml
@@ -0,0 +1,6 @@
+<Namespace Name="Mono.DocTest">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-javascript/ns-System.xml b/mdoc/Test/en.expected-javascript/ns-System.xml
new file mode 100644
index 00000000..c9692742
--- /dev/null
+++ b/mdoc/Test/en.expected-javascript/ns-System.xml
@@ -0,0 +1,6 @@
+<Namespace Name="System">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/mdoc.Test/BasicFormatterTests.cs b/mdoc/mdoc.Test/BasicFormatterTests.cs
index 4bbefe15..3cb521e6 100644
--- a/mdoc/mdoc.Test/BasicFormatterTests.cs
+++ b/mdoc/mdoc.Test/BasicFormatterTests.cs
@@ -107,7 +107,7 @@ namespace mdoc.Test
protected void TestPropertySignature(Type type, string expected, string memberName)
{
var signature = GetPropertySignature(type, memberName);
- Assert.AreEqual(expected, signature);
+ Assert.AreEqual(FormatEndings(expected), signature);
}
private string GetPropertySignature(Type type, string memberName)
@@ -131,7 +131,7 @@ namespace mdoc.Test
protected void TestFieldSignature(Type type, string expected, string memberName)
{
var usage = GetFieldUsage(type, memberName);
- Assert.AreEqual(expected, usage);
+ Assert.AreEqual(FormatEndings(expected), usage);
}
private string GetFieldUsage(Type type, string memberName)
diff --git a/mdoc/mdoc.Test/JsMemberFormatterTests.cs b/mdoc/mdoc.Test/JsMemberFormatterTests.cs
new file mode 100644
index 00000000..a710457e
--- /dev/null
+++ b/mdoc/mdoc.Test/JsMemberFormatterTests.cs
@@ -0,0 +1,40 @@
+using mdoc.Mono.Documentation.Updater.Formatters;
+using mdoc.Test.SampleClasses;
+using NUnit.Framework;
+
+namespace mdoc.Test
+{
+ [TestFixture]
+ [Category("Javascript")]
+ [Category("Usage")]
+ class JsMemberFormatterTests : BasicFormatterTests<JsMemberFormatter>
+ {
+ protected override JsMemberFormatter formatter => new JsMemberFormatter();
+
+
+ #region Methods
+ [Test]
+ [Category("Methods")]
+ public void Test_AyncMethod()
+ => TestMethodSignature(typeof(SomeClass),
+ "function asyncMethod()",
+ nameof(SomeClass.AsyncMethod));
+ #endregion
+
+ #region Types
+ [Test]
+ [Category("Types")]
+ [Category("Constructors")]
+ public void Test_Constructor_0()
+ => TestTypeSignature(typeof(TestClass),
+ "function TestClass()");
+
+ [Test]
+ [Category("Types")]
+ [Category("Constructors")]
+ public void Test_Constructor_1()
+ => TestTypeSignature(typeof(SomeClass),
+ "function SomeClass(i, j)");
+ #endregion
+ }
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/JsUsageFormatterTests.cs b/mdoc/mdoc.Test/JsUsageFormatterTests.cs
new file mode 100644
index 00000000..ac2cf6f1
--- /dev/null
+++ b/mdoc/mdoc.Test/JsUsageFormatterTests.cs
@@ -0,0 +1,286 @@
+using mdoc.Mono.Documentation.Updater.Formatters;
+using mdoc.Test.SampleClasses;
+using Mono.Documentation.Updater;
+using NUnit.Framework;
+
+namespace mdoc.Test
+{
+ [TestFixture]
+ [Category("Javascript")]
+ [Category("Usage")]
+ class JsUsageFormatterTests : BasicFormatterTests<JsUsageFormatter>
+ {
+ protected override JsUsageFormatter formatter => new JsUsageFormatter();
+
+ #region IsSupported
+ [Test]
+ public void Test_IsSupportedType_WebHostHidden()
+ {
+ Assert.IsFalse(formatter.IsSupported(GetType(typeof(WebHostHiddenTestClass))));
+ }
+
+ [Test]
+ public void Test_IsSupportedMember_WebHostHidden()
+ {
+ Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(WebHostHiddenTestClass),
+ i => i.Name == nameof(WebHostHiddenTestClass.SomeMethod))));
+ }
+
+ [Test]
+ public void Test_IsSupportedType_Generic()
+ {
+ Assert.IsFalse(formatter.IsSupported(GetType(typeof(SomeGenericClass<>))));
+ }
+
+ [Test]
+ public void Test_IsSupportedMember_Generic()
+ {
+ Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeGenericClass<>),
+ i => i.Name == "SomeMethod")));
+ }
+
+ [Test]
+ public void Test_IsSupportedMember_Generic2()
+ {
+ Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeGenericClass<>),
+ i => i.Name == "SomeMethod2")));
+ }
+
+ [Test]
+ public void Test_IsSupportedMember_Generic3()
+ {
+ // WinRT doesn't support public types with generic parameters
+ Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeGenericClass<>),
+ i => i.Name == "SomeMethod3")));
+ }
+
+ [Test]
+ public void Test_IsSupported_MethodWithWebHostHiddenParameter()
+ {
+ Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeClass),
+ i => i.Name == nameof(SomeClass.SomeMethodWebHostHiddenParameter))));
+ }
+
+ [Test]
+ public void Test_IsSupported_MethodWithWebHostHiddenReturn()
+ {
+ Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeClass),
+ i => i.Name == nameof(SomeClass.SomeMethodWebHostHiddenReturn))));
+ }
+
+ [Test]
+ public void Test_IsSupportedMember_Operator()
+ {
+ // Operator overloads are not supported as they are not supported for Windows Runtime
+ // (that is to say, they are not supported at the ABI level).
+ // C# supports operator overloading, and C# implementations get compiled to metadata as static methods
+ // on the type in question, such as TypeName::op_Equality, TypeName::op_GreaterThan, etc.
+ // You can see a list on StackOverflow. As long as they’re public, they can be invoked by name
+ // just like any other static method.
+ Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(TestClass),
+ i => i.Name == "op_UnaryPlus")));
+ }
+
+ [Test]
+ public void Test_IsSupportedMember_NotOperator()
+ {
+ Assert.IsFalse(formatter.IsSupported(GetMethod(typeof(SomeClass),
+ i => i.Name == nameof(SomeClass.op_NotOperator))));
+ }
+
+ #endregion
+
+ #region Fields
+ [Test]
+ [Category("Fields")]
+ public void Test_Field()
+ => TestFieldSignature(typeof(SomeStruct),
+ null, nameof(SomeStruct.IntMember));
+ #endregion
+
+ #region Properties
+ [Test]
+ [Category("Properties")]
+ public void Test_Property_0()
+ => TestPropertySignature(typeof(SomeClass),
+@"var int32 = someClass.property;
+someClass.property = int32;",
+nameof(SomeClass.Property));
+
+ [Test]
+ [Category("Properties")]
+ public void Test_Property_1()
+ => TestPropertySignature(typeof(SomeClass),
+@"var testClass = someClass.property2;
+someClass.property2 = testClass;",
+nameof(SomeClass.Property2));
+
+ [Test]
+ [Category("Properties")]
+ public void Test_Property_2()
+ => TestPropertySignature(typeof(SomeClass),
+ "var testClass = someClass.property3;",
+ nameof(SomeClass.Property3));
+
+ [Test]
+ [Category("Properties")]
+ public void Test_Property_3()
+ => TestPropertySignature(typeof(SomeClass),
+ "someClass.property4 = testClass;",
+ nameof(SomeClass.Property4));
+
+ [Test]
+ [Category("Properties")]
+ public void Test_Static_Property_0()
+ => TestPropertySignature(typeof(SomeClass),
+@"var int32 = SomeClass.staticProperty;
+SomeClass.staticProperty = int32;",
+nameof(SomeClass.StaticProperty));
+ #endregion
+
+ #region Types
+ [Test]
+ [Category("Types")]
+ [Category("Enums")]
+ public void Test_Enum_0()
+ => TestTypeSignature(typeof(SomeEnum), "var value = mdoc.Test.SampleClasses.SomeEnum.testEnumElement1");
+
+ [Test]
+ [Category("Types")]
+ [Category("Enums")]
+ public void Test_Enum_1()
+ => TestTypeSignature(typeof(SomeEmptyEnum), null);
+
+ [Test]
+ [Category("Types")]
+ [Category("Struct")]
+ public void Test_Struct()
+ => TestTypeSignature(typeof(SomeStruct),
+@"var someStruct = {
+intMember : /* Your value */,
+staticMember : /* Your value */,
+testClassMember : /* Your value */
+}");
+
+ [Test]
+ [Category("Types")]
+ [Category("Deleagates")]
+ public void Test_Delegate()
+ => TestTypeSignature(typeof(SomeDelegate),
+@"var someDelegateHandler = function(str){
+/* Your code */
+}");
+
+ [Test]
+ [Category("Types")]
+ [Category("Class")]
+ public void Test_Class_0()
+ => TestTypeSignature(typeof(SomeClass),
+@"var someClass = new SomeClass(i, j);");
+
+ [Test]
+ [Category("Types")]
+ [Category("Class")]
+ public void Test_Class_1()
+ => TestTypeSignature(typeof(SomeClassWithManyConstructors), null);
+
+ #endregion
+
+ #region Methods
+ [Test]
+ [Category("Methods")]
+ public void Test_AyncMethod()
+ => TestMethodSignature(typeof(SomeClass),
+ "someClass.asyncMethod().done( /* Your success and error handlers */ )",
+ nameof(SomeClass.AsyncMethod));
+
+ [Test]
+ [Category("Methods")]
+ public void Test_StaticAyncMethod()
+ => TestMethodSignature(typeof(SomeClass),
+ "mdoc.Test.SampleClasses.SomeClass.staticAsyncMethod().done( /* Your success and error handlers */ )",
+ nameof(SomeClass.StaticAsyncMethod));
+
+ [Test]
+ [Category("Methods")]
+ public void Test_Method()
+ => TestMethodSignature(typeof(SomeClass),
+ "someClass.someMethod()",
+ nameof(SomeClass.SomeMethod));
+
+ [Test]
+ [Category("Methods")]
+ public void Test_StaticMethod()
+ => TestMethodSignature(typeof(SomeClass),
+ "mdoc.Test.SampleClasses.SomeClass.someStaticMethod()",
+ nameof(SomeClass.SomeStaticMethod));
+
+ [Test]
+ [Category("Methods")]
+ public void Test_MethodWithParameters()
+ => TestMethodSignature(typeof(SomeClass),
+ "someClass.someMethodWithParameters(someClass, i)",
+ nameof(SomeClass.SomeMethodWithParameters));
+
+ [Test]
+ [Category("Methods")]
+ public void Test_MethodWithReturn()
+ => TestMethodSignature(typeof(SomeClass),
+ "var int32 = someClass.someMethod2()",
+ nameof(SomeClass.SomeMethod2));
+
+ [Test]
+ [Category("Methods")]
+ public void Test_MethodWithReturnBool()
+ => TestMethodSignature(typeof(SomeClass),
+ "var boolean = someClass.someMethodWithReturnBool()",
+ nameof(SomeClass.SomeMethodWithReturnBool));
+
+ [Test]
+ [Category("Methods")]
+ public void Test_StaticMethodWithReturn()
+ => TestMethodSignature(typeof(SomeClass),
+ "var int32 = mdoc.Test.SampleClasses.SomeClass.someStaticMethod2()",
+ nameof(SomeClass.SomeStaticMethod2));
+
+ [Test]
+ [Category("Methods")]
+ [Category("Constructors")]
+ public void Test_Constructor()
+ => TestMethodSignature(typeof(TestClass),
+ "var testClass = new TestClass();",
+ ".ctor");
+ #endregion
+
+ #region Events
+ [Test]
+ [Category("Events")]
+ public void Test_Event()
+ => TestEventSignature(typeof(SomeClass),
+"function onAppMemoryUsageIncreased(eventArgs) { /* Your code */ }" + MemberFormatter.GetLineEnding() +
+"someClass.addEventListener(\"appmemoryusageincreased\", onAppMemoryUsageIncreased);" + MemberFormatter.GetLineEnding() +
+"someClass.removeEventListener(\"appmemoryusageincreased\", onAppMemoryUsageIncreased);" + MemberFormatter.GetLineEnding() +
+"- or -" + MemberFormatter.GetLineEnding() +
+"someClass.onappmemoryusageincreased = onAppMemoryUsageIncreased;",
+ nameof(SomeClass.AppMemoryUsageIncreased));
+
+ [Test]
+ [Category("Events")]
+ public void Test_StaticEvent()
+ => TestEventSignature(typeof(SomeClass),
+"function onStaticEvent(eventArgs) { /* Your code */ }" + MemberFormatter.GetLineEnding() +
+"mdoc.Test.SampleClasses.SomeClass.addEventListener(\"staticevent\", onStaticEvent);" + MemberFormatter.GetLineEnding() +
+"mdoc.Test.SampleClasses.SomeClass.removeEventListener(\"staticevent\", onStaticEvent);" + MemberFormatter.GetLineEnding() +
+"- or -" + MemberFormatter.GetLineEnding() +
+"mdoc.Test.SampleClasses.SomeClass.onstaticevent = onStaticEvent;",
+ nameof(SomeClass.StaticEvent));
+
+ [Test]
+ [Category("Events")]
+ public void Test_EventPrivate()
+ => TestEventSignature(typeof(SomeClass),
+ null,
+ "PrivateEvent");
+ #endregion
+ }
+}
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeClass.cs b/mdoc/mdoc.Test/SampleClasses/SomeClass.cs
new file mode 100644
index 00000000..be72f7f3
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeClass.cs
@@ -0,0 +1,96 @@
+using System;
+using Windows.Foundation.Metadata;
+
+namespace mdoc.Test.SampleClasses
+{
+ public class SomeClass
+ {
+ public SomeClass(int i)
+ {
+
+ }
+
+ public SomeClass(int i, int j)
+ {
+
+ }
+
+ public int Field;
+
+ public int Property { get; set; }
+
+ public static int StaticProperty { get; set; }
+
+ public TestClass Property2 { get; set; }
+ public static TestClass StaticProperty2 { get; set; }
+
+ public TestClass Property3 { get; }
+
+ public TestClass Property4
+ {
+ set
+ {
+
+ }
+ }
+
+ public async void AsyncMethod()
+ {
+
+ }
+
+ public static async void StaticAsyncMethod()
+ {
+
+ }
+
+ public void SomeMethodWithParameters(SomeClass someClass, int i)
+ {
+
+ }
+
+ public void SomeMethod()
+ {
+
+ }
+
+ public void SomeMethodWebHostHiddenParameter([WebHostHidden] int parameter)
+ {
+
+ }
+
+ [return: WebHostHidden()]
+ public int SomeMethodWebHostHiddenReturn(int parameter)
+ {
+ throw new NotImplementedException();
+ }
+
+ public static void SomeStaticMethod()
+ {
+
+ }
+
+ public int SomeMethod2()
+ {
+ return 0;
+ }
+
+ public static int SomeStaticMethod2()
+ {
+ return 0;
+ }
+
+ public bool SomeMethodWithReturnBool()
+ {
+ return true;
+ }
+
+ public void op_NotOperator()
+ {
+ }
+
+ public event EventHandler<object> AppMemoryUsageIncreased;
+ public static event EventHandler<object> StaticEvent;
+ private static event EventHandler<object> PrivateEvent;
+ }
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeClassWithManyConstructors.cs b/mdoc/mdoc.Test/SampleClasses/SomeClassWithManyConstructors.cs
new file mode 100644
index 00000000..edbc4f60
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeClassWithManyConstructors.cs
@@ -0,0 +1,15 @@
+namespace mdoc.Test.SampleClasses
+{
+ public sealed class SomeClassWithManyConstructors
+ {
+ public SomeClassWithManyConstructors(int i)
+ {
+
+ }
+
+ public SomeClassWithManyConstructors(float i)
+ {
+
+ }
+ }
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeDelegate.cs b/mdoc/mdoc.Test/SampleClasses/SomeDelegate.cs
new file mode 100644
index 00000000..7c5b6cb2
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeDelegate.cs
@@ -0,0 +1,4 @@
+namespace mdoc.Test.SampleClasses
+{
+ public delegate void SomeDelegate(string str);
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeEmptyEnum.cs b/mdoc/mdoc.Test/SampleClasses/SomeEmptyEnum.cs
new file mode 100644
index 00000000..350bc3b9
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeEmptyEnum.cs
@@ -0,0 +1,6 @@
+namespace mdoc.Test.SampleClasses
+{
+ public enum SomeEmptyEnum
+ {
+ }
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeEnum.cs b/mdoc/mdoc.Test/SampleClasses/SomeEnum.cs
new file mode 100644
index 00000000..87593b0d
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeEnum.cs
@@ -0,0 +1,8 @@
+namespace mdoc.Test.SampleClasses
+{
+ public enum SomeEnum
+ {
+ TestEnumElement1,
+ TestEnumElement2,
+ }
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeGenericClass.cs b/mdoc/mdoc.Test/SampleClasses/SomeGenericClass.cs
new file mode 100644
index 00000000..5d0bbf22
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeGenericClass.cs
@@ -0,0 +1,18 @@
+namespace mdoc.Test.SampleClasses
+{
+ public class SomeGenericClass<T>
+ {
+ public void SomeMethod<T>(T t)
+ {
+
+ }
+ public void SomeMethod2(T t)
+ {
+
+ }
+ public void SomeMethod3(int t)
+ {
+
+ }
+ }
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/SampleClasses/SomeStruct.cs b/mdoc/mdoc.Test/SampleClasses/SomeStruct.cs
new file mode 100644
index 00000000..49fa8900
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/SomeStruct.cs
@@ -0,0 +1,9 @@
+namespace mdoc.Test.SampleClasses
+{
+ public struct SomeStruct
+ {
+ public int IntMember;
+ public static int StaticMember;
+ public TestClass TestClassMember;
+ }
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/SampleClasses/WebHostHiddenAttribute.cs b/mdoc/mdoc.Test/SampleClasses/WebHostHiddenAttribute.cs
new file mode 100644
index 00000000..6931f0e9
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/WebHostHiddenAttribute.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace Windows.Foundation.Metadata
+{
+ public class WebHostHiddenAttribute : Attribute
+ {
+
+ }
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/SampleClasses/WebHostHiddenTestClass.cs b/mdoc/mdoc.Test/SampleClasses/WebHostHiddenTestClass.cs
new file mode 100644
index 00000000..765e8198
--- /dev/null
+++ b/mdoc/mdoc.Test/SampleClasses/WebHostHiddenTestClass.cs
@@ -0,0 +1,14 @@
+using Windows.Foundation.Metadata;
+
+namespace mdoc.Test.SampleClasses
+{
+ [WebHostHidden]
+ public class WebHostHiddenTestClass
+ {
+ [WebHostHidden]
+ public void SomeMethod()
+ {
+
+ }
+ }
+}
diff --git a/mdoc/mdoc.Test/mdoc.Test.csproj b/mdoc/mdoc.Test/mdoc.Test.csproj
index f15adf7a..4feee40c 100644
--- a/mdoc/mdoc.Test/mdoc.Test.csproj
+++ b/mdoc/mdoc.Test/mdoc.Test.csproj
@@ -49,9 +49,20 @@
<Compile Include="FormatterTests.cs" />
<Compile Include="FSharp\FSharpFormatterTests.cs" />
<Compile Include="FSharp\FSharpUsageFormatterTests.cs" />
+ <Compile Include="JsMemberFormatterTests.cs" />
+ <Compile Include="JsUsageFormatterTests.cs" />
+ <Compile Include="SampleClasses\SomeDelegate.cs" />
<Compile Include="SampleClasses\TestClass.cs" />
+ <Compile Include="SampleClasses\SomeGenericClass.cs" />
+ <Compile Include="SampleClasses\WebHostHiddenTestClass.cs" />
+ <Compile Include="SampleClasses\SomeClass.cs" />
+ <Compile Include="SampleClasses\SomeClassWithManyConstructors.cs" />
+ <Compile Include="SampleClasses\SomeEmptyEnum.cs" />
+ <Compile Include="SampleClasses\SomeEnum.cs" />
<Compile Include="SampleClasses\TestPrivateClass.cs" />
<Compile Include="SampleClasses\TestClassTwo.cs" />
+ <Compile Include="SampleClasses\SomeStruct.cs" />
+ <Compile Include="SampleClasses\WebHostHiddenAttribute.cs" />
<Compile Include="VBFormatterTests.cs" />
</ItemGroup>
<ItemGroup>
diff --git a/mdoc/mdoc.csproj b/mdoc/mdoc.csproj
index 6219cd9a..71b58d53 100644
--- a/mdoc/mdoc.csproj
+++ b/mdoc/mdoc.csproj
@@ -53,6 +53,9 @@
<ItemGroup>
<Compile Include="Mono.Documentation\Updater\Formatters\ApplePlatformEnumFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\FSharpFormatter.cs" />
+ <Compile Include="Mono.Documentation\Updater\Formatters\JsFormatter.cs" />
+ <Compile Include="Mono.Documentation\Updater\Formatters\JsMemberFormatter.cs" />
+ <Compile Include="Mono.Documentation\Updater\Formatters\JsUsageFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\FSharpFullMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\FSharpMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\FSharpUsageFormatter.cs" />