2 using System.Collections;
3 using System.Collections.Generic;
6 public class NoNamespace {}
10 * The System namespace gets special treatment, e.g. instead of
11 * System.Environment C# declarations it's just Environment.
13 /// <remarks><c>T:System.Action`1</c></remarks>
14 public delegate void Action<T> (T obj);
16 /// <remarks><c>T:System.Environment</c></remarks>
17 public static class Environment {
18 /// <remarks><c>T:System.Environment+SpecialFolder</c></remarks>
19 public enum SpecialFolder {}
21 /// <param name="folder">
22 /// A <see cref="T:System.Environment+SpecialFolder" /> instance.
25 /// <c>M:System.Environment.GetFolderPath(System.Environment+SpecialFolder)</c>
27 public static string GetFolderPath (SpecialFolder folder)
29 throw new NotSupportedException ();
33 // to test ECMA doc importing...
35 // the ECMA docs have a different return type than .NET -- skip.
36 public static System.Collections.ObjectModel.ReadOnlyCollection<T> AsReadOnly<T> (T[] array)
38 throw new NotImplementedException ();
41 // ECMA docs use <T,U> instead of <TInput,TOutput> --> map them.
42 public static TOutput[] ConvertAll<TInput, TOutput> (TInput[] array, Converter<TInput, TOutput> converter)
44 throw new InvalidOperationException ();
47 // ECMA docs *incorrectly* document parameter -- skip
48 public static void Resize<T> (ref T[] array, int newSize)
50 throw new Exception ();
54 // to test ECMA doc importing...
55 public delegate void AsyncCallback (IAsyncResult ar);
58 namespace Mono.DocTest {
59 internal class Internal {
60 public class ShouldNotBeDocumented {
64 internal class MonoTODOAttribute : Attribute {
69 /// cref=<c>T:Mono.DocTest.DocAttribute</c>.
71 /// <format type="text/html">
72 /// <table width="100%">
74 /// <td style="color:red">red</td>
75 /// <td style="color:blue">blue</td>
76 /// <td style="color:green">green</td>
80 /// <code lang="C#" src="../DocTest.cs#DocAttribute Example" />
82 [AttributeUsage (AttributeTargets.All)]
83 public class DocAttribute : Attribute {
84 #region DocAttribute Example
85 [Doc ("documented class")]
87 [Doc ("documented field")] public string field;
90 /// <remarks><c>C:Mono.DocTest.DocAttribute(System.String)</c></remarks>
91 public DocAttribute (string docs)
94 throw new ArgumentNullException ("docs");
97 /// <remarks><c>P:Mono.DocTest.DocAttribute.Property</c></remarks>
98 public Type Property { get; set; }
100 /// <remarks><c>F:Mono.DocTest.DocAttribute.Field</c></remarks>
103 /// <remarks><c>F:Mono.DocTest.DocAttribute.FlagsEnum</c></remarks>
104 public ConsoleModifiers FlagsEnum;
106 /// <remarks><c>F:Mono.DocTest.DocAttribute.NonFlagsEnum</c></remarks>
107 public Color NonFlagsEnum;
110 /// <summary>Possible colors</summary>
111 /// <remarks><see cref="T:Mono.DocTest.Color"/>.</remarks>
114 /// <summary>Insert Red summary here</summary>
115 /// <remarks><c>F:Mono.DocTest.Color.Red</c>.</remarks>
117 /// <summary>Insert Blue summary here</summary>
118 /// <remarks><c>F:Mono.DocTest.Color.Blue</c>.</remarks>
120 /// <summary>Insert Green summary here</summary>
121 /// <remarks><c>F:Mono.DocTest.Color.Green</c>.</remarks>
124 AnotherGreen = Green,
127 /// <summary>Process interface</summary>
128 /// <remarks><c>T:Mono.DocTest.IProcess</c>.</remarks>
129 public interface IProcess {}
131 /// <summary>Process interface</summary>
132 /// <remarks><c>T:Mono.DocTest.DocValueType</c>.</remarks>
133 public struct DocValueType : IProcess {
134 /// <remarks><c>F:Mono.DocTest.DocValueType.total</c>.</remarks>
137 /// <param name="i">A <see cref="T:System.Int32" />.</param>
138 /// <remarks><see cref="M:Mono.DocTest.DocValueType.M(System.Int32)"/>.</remarks>
139 public void M (int i)
141 if ((new Random().Next() % 2) == 0)
142 throw new SystemException ();
143 throw new ApplicationException ();
147 /// <remarks><c>T:Mono.DocTest.Widget</c>.</remarks>
148 /// <seealso cref="P:Mono.DocTest.Widget.Item(System.Int32)" />
149 /// <extra>Some extra tag value</extra>
150 public unsafe class Widget : IProcess {
151 /// <remarks><c>T:Mono.DocTest.Widget.NestedClass</c>.</remarks>
152 public class NestedClass {
153 /// <remarks><c>F:Mono.DocTest.Widget.NestedClass.value</c>.</remarks>
156 /// <param name="i">Some <see cref="T:System.Int32" />.</param>
157 /// <remarks><c>M:Mono.DocTest.Widget.NestedClass.M(System.Int32)</c>.</remarks>
158 public void M (int i) {}
160 /// <remarks><c>T:Mono.DocTest.Widget.NestedClass.Double</c>.</remarks>
161 public class Double {
162 /// <remarks><c>T:Mono.DocTest.Widget.NestedClass.Double.Triple</c>.</remarks>
163 public class Triple {
164 /// <remarks><c>T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple</c>.</remarks>
165 public class Quadruple {} // for good measure
170 /// <remarks><c>T:Mono.DocTest.Widget.NestedClass`1</c>.</remarks>
171 public class NestedClass<T> {
172 /// <remarks><c>F:Mono.DocTest.Widget.NestedClass`1.value</c>.</remarks>
175 /// <param name="i">Another <see cref="T:System.Int32" />.</param>
176 /// <remarks><c>M:Mono.DocTest.Widget.NestedClass`1.M(System.Int32)</c>.</remarks>
177 public void M (int i) {}
180 /// <remarks><c>F:Mono.DocTest.Widget.classCtorError</c>.</remarks>
181 public static readonly string[] classCtorError = CreateArray ();
183 private static string[] CreateArray ()
185 throw new NotSupportedException ();
188 /// <remarks><c>F:Mono.DocTest.Widget.message</c>.</remarks>
189 public string message;
191 /// <remarks><c>F:Mono.DocTest.Widget.defaultColor</c>.</remarks>
192 protected static Color defaultColor;
194 /// <remarks><c>F:Mono.DocTest.Widget.PI</c>.</remarks>
195 protected internal const double PI = 3.14159;
197 /// <remarks><c>F:Mono.DocTest.Widget.monthlyAverage</c>.</remarks>
198 internal protected readonly double monthlyAverage;
200 /// <remarks><c>F:Mono.DocTest.Widget.array1</c>.</remarks>
201 public long[] array1;
203 /// <remarks><c>F:Mono.DocTest.Widget.array2</c>.</remarks>
204 public Widget[,] array2;
206 /// <remarks><c>F:Mono.DocTest.Widget.pCount</c>.</remarks>
207 public unsafe int *pCount;
209 /// <remarks><c>F:Mono.DocTest.Widget.ppValues</c>.</remarks>
210 public unsafe float **ppValues;
212 /// <remarks><c>T:Mono.DocTest.Widget.IMenuItem</c>.</remarks>
213 public interface IMenuItem {
214 /// <remarks><c>M:Mono.DocTest.Widget.IMenuItem.A</c>.</remarks>
217 /// <remarks><c>P:Mono.DocTest.Widget.IMenuItem.P</c>.</remarks>
221 /// <remarks><c>T:Mono.DocTest.Widget.Del</c>.</remarks>
222 public delegate void Del (int i);
224 /// <remarks><c>T:Mono.DocTest.Widget.Direction</c>.</remarks>
226 public enum Direction {
227 /// <remarks><c>T:Mono.DocTest.Widget.Direction.North</c>.</remarks>
229 /// <remarks><c>T:Mono.DocTest.Widget.Direction.South</c>.</remarks>
231 /// <remarks><c>T:Mono.DocTest.Widget.Direction.East</c>.</remarks>
233 /// <remarks><c>T:Mono.DocTest.Widget.Direction.West</c>.</remarks>
238 /// <para><c>C:Mono.DocTest.Widget</c>.</para>
239 /// <para><c>M:Mono.DocTest.Widget.#ctor</c>.</para>
240 /// <para><see cref="C:Mono.DocTest.Widget(System.String)" /></para>
241 /// <para><see cref="C:Mono.DocTest.Widget(System.Converter{System.String,System.String})" /></para>
245 /// <param name="s">A <see cref="T:System.String" />.</param>
247 /// <para><c>C:Mono.DocTest.Widget(System.String)</c>.</para>
248 /// <para><c>M:Mono.DocTest.Widget.#ctor(System.String)</c>.</para>
250 public Widget (string s) {}
252 /// <param name="c">A <see cref="T:System.Converter{System.String,System.String}" />.</param>
254 /// <para><c>C:Mono.DocTest.Widget(System.Converter{System.String,System.String})</c>.</para>
256 public Widget (Converter<string,string> c) {}
258 /// <remarks><c>M:Mono.DocTest.Widget.M0</c>.</remarks>
259 public static void M0 () {}
261 /// <param name="c">A <see cref="T:System.Char" />.</param>
262 /// <param name="f">A <see cref="T:System.Single" />.</param>
263 /// <param name="v">A <see cref="T:Mono.DocTest.DocValueType" />.</param>
264 /// <remarks><c>M:Mono.DocTest.Widget.M1(System.Char,System.Signle@,Mono.DocTest.DocValueType@)</c>.</remarks>
265 [return:Doc ("return:DocAttribute", Property=typeof(Widget))]
266 [Doc("normal DocAttribute", Field=true)]
267 public void M1 ([Doc ("c", FlagsEnum=ConsoleModifiers.Alt | ConsoleModifiers.Control)] char c,
268 [Doc ("f", NonFlagsEnum=Color.Red)] out float f,
269 [Doc ("v")] ref DocValueType v) {f=0;}
271 /// <param name="x1">A <see cref="T:System.Int16" /> array.</param>
272 /// <param name="x2">A <see cref="T:System.Int32" /> array.</param>
273 /// <param name="x3">A <see cref="T:System.Int64" /> array.</param>
274 /// <remarks><c>M:Mono.DocTest.Widget.M2(System.Int16[],System.Int32[0:,0:],System.Int64[][])</c>.</remarks>
275 public void M2 (short[] x1, int[,] x2, long[][] x3) {}
277 /// <param name="x3">Another <see cref="T:System.Int64" /> array.</param>
278 /// <param name="x4">A <see cref="T:Mono.DocTest.Widget" /> array.</param>
279 /// <remarks><c>M:Mono.DocTest.Widget.M3(System.Int64[][],Mono.DocTest.Widget[0:,0:,0:][])</c>.</remarks>
280 protected void M3 (long[][] x3, Widget[][,,] x4) {}
282 /// <param name="pc">A <see cref="T:System.Char" /> pointer.</param>
283 /// <param name="ppf">A <see cref="T:Mono.DocTest.Color" /> pointer.</param>
284 /// <remarks><c>M:Mono.DocTest.Widget.M4(System.Char*,Mono.DocTest.Color**)</c>.</remarks>
285 protected unsafe void M4 (char *pc, Color **ppf) {}
287 /// <param name="pv">A <see cref="T:System.Void" /> pointer.</param>
288 /// <param name="pd">A <see cref="T:System.Double" /> array.</param>
289 /// <remarks><c>M:Mono.DocTest.Widget.M5(System.Void*,System.Double*[0:,0:][])</c>.</remarks>
290 protected unsafe void M5 (void *pv, double *[][,] pd) {}
292 /// <param name="i">Yet another <see cref="T:System.Int32" />.</param>
293 /// <param name="args">An <see cref="T:System.Object" /> array.</param>
294 /// <remarks><c>M:Mono.DocTest.Widget.M6(System.Int32,System.Object[])</c>.</remarks>
295 protected void M6 (int i, params object[] args) {}
297 /// <remarks><c>M:Mono.DocTest.Widget.M7(Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple)</c>.</remarks>
298 public void M7(Widget.NestedClass.Double.Triple.Quadruple a) {}
300 /// <value>A <see cref="T:System.Int32" /> value...</value>
301 /// <remarks><c>P:Mono.DocTest.Widget.Width</c>.</remarks>
302 [Doc ("Width property")]
304 [Doc ("Width get accessor")]
306 [Doc ("Width set accessor")]
310 /// <value>A <see cref="T:System.Int64" /> value...</value>
311 /// <remarks><c>P:Mono.DocTest.Widget.Height</c>.</remarks>
312 [Doc ("Height property")]
313 protected long Height {get {return 0;}}
315 /// <value>A <see cref="T:System.Int16" /> value...</value>
316 /// <remarks><c>P:Mono.DocTest.Widget.X</c>.</remarks>
317 protected internal short X {set {}}
319 /// <value>A <see cref="T:System.Double" /> value...</value>
320 /// <remarks><c>P:Mono.DocTest.Widget.Y</c>.</remarks>
321 internal protected double Y {get {return 0;} set {}}
324 /// <param name="i">TODO</param>
325 /// <remarks><c>P:Mono.DocTest.Widget.Item(System.Int32)</c>.</remarks>
326 /// <value>A <see cref="T:System.Int32" /> instance.</value>
327 [Doc ("Item property")]
328 public int this [int i] {
330 [Doc ("Item property set accessor")]
334 /// <param name="s">Some <see cref="T:System.String" />.</param>
335 /// <param name="i">I love <see cref="T:System.Int32" />s.</param>
336 /// <remarks><c>P:Mono.DocTest.Widget.Item(System.String,System.Int32)</c>.</remarks>
337 /// <value>A <see cref="T:System.Int32" /> instance.</value>
338 public int this [string s, int i] {get {return 0;} set {}}
340 /// <remarks><c>E:Mono.DocTest.Widget.AnEvent</c>.</remarks>
342 public event Del AnEvent {
343 [Doc ("Del add accessor")]
345 [Doc ("Del remove accessor")]
349 /// <remarks><c>E:Mono.DocTest.Widget.AnotherEvent</c>.</remarks>
350 protected event Del AnotherEvent;
352 /// <param name="x">Another <see cref="T:Mono.DocTest.Widget" />.</param>
353 /// <remarks><c>M:Mono.DocTest.Widget.op_UnaryPlus(Mono.DocTest.Widget)</c>.</remarks>
354 /// <returns>A <see cref="T:Mono.DocTest.Widget" /> instance.</returns>
355 public static Widget operator+ (Widget x) {return null;}
357 /// <param name="x1">Yet Another <see cref="T:Mono.DocTest.Widget" />.</param>
358 /// <param name="x2">Yay, <see cref="T:Mono.DocTest.Widget" />s.</param>
359 /// <remarks><c>M:Mono.DocTest.Widget.op_Addition(Mono.DocTest.Widget,Mono.DocTest.Widget)</c>.</remarks>
360 /// <returns>A <see cref="T:Mono.DocTest.Widget" /> instance (2).</returns>
361 public static Widget operator+ (Widget x1, Widget x2) {return null;}
363 /// <param name="x"><see cref="T:Mono.DocTest.Widget" />s are fun!.</param>
364 /// <remarks><c>M:Mono.DocTest.Widget.op_Explicit(Mono.DocTest.Widget)~System.Int32</c>.</remarks>
365 /// <returns>A <see cref="T:System.Int32" /> instance.</returns>
366 public static explicit operator int (Widget x) {return 0;}
368 /// <param name="x"><c>foo</c>; <see cref="T:Mono.DocTest.Widget" />.</param>
369 /// <remarks><c>M:Mono.DocTest.Widget.op_Implicit(Mono.DocTest.Widget)~System.Int64</c>.</remarks>
370 /// <returns>A <see cref="T:System.Int64" /> instance.</returns>
371 public static implicit operator long (Widget x) {return 0;}
374 /// <remarks><c>T:Mono.DocTest.UseLists</c>.</remarks>
375 public class UseLists
377 /// <param name="list">A <see cref="T:Mono.DocTest.Generic.MyList{System.Int32}" />.</param>
378 /// <remarks><c>M:Mono.DocTest.UseLists.Process(Mono.DocTest.MyList{System.Int32})</c>.</remarks>
379 public void Process (Generic.MyList<int> list) {}
381 /// <param name="value">A <c>T</c>.</param>
382 /// <typeparam name="T">Something</typeparam>
383 /// <remarks><c>M:Mono.DocTest.UseLists.GetValues``1(``0)</c>.</remarks>
384 /// <returns>A <see cref="T:Mono.DocTest.Generic.MyList`1" /> instance.</returns>
385 public Generic.MyList<T> GetValues <T> (T value) where T : struct {return null;}
387 /// <param name="list">Another <see cref="T:Mono.DocTest.Generic.MyList{System.Int32}" />.</param>
389 /// <para><c>M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})</c>.</para>
390 /// <para><see cref="M:System.Collections.Generic.List{System.Int32}.Remove(`0)" /></para>
392 /// <exception invalid="foo">text!</exception>
393 public void Process (List<int> list)
395 // Bug: only creation is looked for, so this generates an <exception/>
399 // Bug? We only look at "static" types, so we can't follow
400 // delegates/interface calls:
401 Func<int, int> a = x => {throw new InvalidOperationException ();};
404 // Multi-dimensional arrays have "phantom" methods that Cecil can't
405 // resolve, as they're provided by the runtime. These should be
407 int[,] array = new int[1,1];
411 /// <param name="list">A <see cref="T:Mono.DocTest.Generic.MyList{System.Predicate{System.Int32}}" />.</param>
412 /// <remarks><c>M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})</c>.</remarks>
413 public void Process (List<Predicate<int>> list)
416 throw new ArgumentNullException ("list");
420 /// <param name="list">A <see cref="T:Mono.DocTest.Generic.MyList{System.Predicate{``0}}" />.</param>
421 /// <typeparam name="T">Something Else</typeparam>
422 /// <remarks><c>M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})</c>.</remarks>
423 public void Process<T> (List<Predicate<T>> list)
425 if (list.Any (p => p == null))
426 throw new ArgumentException ("predicate null");
429 /// <param name="helper">A <see cref="T:Mono.DocTest.Generic.MyList{``0}.Helper{``1,``2}" />.</param>
430 /// <typeparam name="T"><c>T</c></typeparam>
431 /// <typeparam name="U"><c>U</c></typeparam>
432 /// <typeparam name="V"><c>V</c></typeparam>
433 /// <remarks><c>M:Mono.DocTest.UseLists.UseHelper``3(Mono.DocTest.Generic.MyList{``0}.Helper{``1,``2})</c>.</remarks>
434 public void UseHelper<T,U,V> (Generic.MyList<T>.Helper<U,V> helper) {}
438 namespace Mono.DocTest.Generic {
439 // Need to place this into a separate namespace to work around gmcs bug
440 // where XML docs for type *following* this one aren't extracted.
442 /// <typeparam name="TArg">argument type, with attributes!</typeparam>
443 /// <typeparam name="TRet">return type, with attributes!</typeparam>
444 /// <remarks><c>T:Mono.DocTest.Generic.Func`2</c>.</remarks>
446 [return:Doc ("return", Field=false)]
447 public delegate TRet Func<[Doc ("arg!")] TArg, [Doc ("ret!")] TRet> (
448 [Doc ("arg-actual")] TArg a
449 ) where TArg : Exception;
452 namespace Mono.DocTest.Generic {
455 /// <summary>extension methods!</summary>
456 /// <remarks><c>T:Mono.DocTest.Generic.Extensions</c></remarks>
457 public static class Extensions {
458 /// <summary><c>System.Object</c> extension method</summary>
459 /// <remarks><c>M:Mono.DocTest.Generic.Extensions.ToEnumerable``1</c></remarks>
460 public static IEnumerable<T> ToEnumerable<T> (this T self)
465 /// <summary><see cref="T:System.Collections.Generic.IEnumerable`1" /> extension method</summary>
466 /// <remarks><c>M:Mono.DocTest.Generic.Extensions.ForEach``1</c></remarks>
467 public static void ForEach<T> (this IEnumerable<T> self, Action<T> a)
471 /// <summary><see cref="T:Mono.DocTest.Generic.IFoo`1" /> extension method</summary>
472 /// <remarks><c>M:Mono.DocTest.Generic.Extensions.Bar``1</c></remarks>
473 public static void Bar <T> (this IFoo<T> self, string s)
478 /// <see cref="T:System.Collections.Generic.IEnumerable{System.Int32}" />
479 /// extension method.
481 /// <remarks><c>M:Mono.DocTest.Generic.Extensions.ToDouble</c></remarks>
482 public static IEnumerable<double> ToDouble (this IEnumerable<int> list)
488 /// <see cref="T:Mono.DocTest.Generic.IFoo`1" /> extension method.
490 /// <remarks><c>M:Mono.DocTest.Generic.Extensions.ToDouble</c></remarks>
491 public static double ToDouble<T> (this T val) where T : IFoo<T>
493 // the target type is T:...IFoo<T>, NOT T:System.Object.
498 /// <typeparam name="U">Insert <c>text</c> here.</typeparam>
499 /// <remarks><c>T:Mono.DocTest.Generic.GenericBase`1</c>.</remarks>
500 public class GenericBase<U> {
502 /// <param name="genericParameter">Something</param>
503 /// <typeparam name="S">Insert more <c>text</c> here.</typeparam>
504 /// <remarks><c>M:Mono.DocTest.GenericBase`1.BaseMethod``1(``0)</c>.</remarks>
505 /// <returns>The default value.</returns>
506 public U BaseMethod<[Doc ("S")] S> (S genericParameter) {
510 /// <remarks><c>F:Mono.DocTest.GenericBase`1.StaticField1</c></remarks>
511 public static readonly GenericBase<U> StaticField1 = new GenericBase<U> ();
513 /// <remarks><c>F:Mono.DocTest.GenericBase`1.ConstField1</c></remarks>
514 public const int ConstField1 = 1;
516 /// <param name="list">Insert description here</param>
517 /// <remarks><c>M:Mono.DocTest.GenericBase`1.op_Explicit(Mono.DocTest.GenericBase{`0})~`0</c></remarks>
518 /// <returns>The default value for <typeparamref name="U"/>.</returns>
519 public static explicit operator U (GenericBase<U> list) {return default(U);}
521 /// <remarks>T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs</remarks>
522 public class FooEventArgs : EventArgs {
525 /// <remarks>E:Mono.DocTest.Generic.GenericBase`1.MyEvent</remarks>
526 public event EventHandler<FooEventArgs> MyEvent;
528 /// <remarks>T:Mono.DocTest.Generic.GenericBase`1.NestedCollection</remarks>
529 public class NestedCollection {
530 /// <remarks>T:Mono.DocTest.Generic.GenericBase`1.NestedCollection.Enumerator</remarks>
531 public struct Enumerator {
536 /// <typeparam name="T">I'm Dying Here!</typeparam>
537 /// <remarks><c>T:Mono.DocTest.Generic.MyList`1</c>.</remarks>
538 public class MyList<[Mono.DocTest.Doc("Type Parameter!")] T> : GenericBase <T>, IEnumerable<int[]>
540 /// <typeparam name="U">Seriously!</typeparam>
541 /// <typeparam name="V">Too <c>many</c> docs!</typeparam>
542 /// <remarks><c>T:Mono.DocTest.MyList`1.Helper`2</c>.</remarks>
543 public class Helper <U, V> {
544 /// <param name="a">Ako</param>
545 /// <param name="b">bko</param>
546 /// <param name="c">cko</param>
547 /// <remarks><c>M:Mono.DocTest.MyList`1.Helper`2.UseT(`0,`1,`2)</c>.</remarks>
548 public void UseT(T a, U b, V c) { }
551 /// <param name="t">tko</param>
552 /// <remarks><c>M:Mono.DocTest.MyList`1.Test(`0)</c>.</remarks>
553 public void Test (T t) {}
555 /// <param name="t">Class generic type</param>
556 /// <param name="u">Method generic type</param>
557 /// <typeparam name="U">Method generic parameter</typeparam>
558 /// <remarks><c>M:Mono.DocTest.MyList`1.Method``1(`0,``0)</c>.</remarks>
559 public void Method <U> (T t, U u) {}
561 // mcs "crashes" (CS1569) on this method; exclude it for now.
562 // <remarks><c>M:Mono.DocTest.MyList`1.RefMethod``1(`0@,``0@)</c>.</remarks>
563 public void RefMethod<U> (ref T t, ref U u) {}
565 /// <param name="helper">A <see cref="T:Mono.DocTest.Generic.MyList`1.Helper`2" />.</param>
566 /// <typeparam name="U">Argh!</typeparam>
567 /// <typeparam name="V">Foo Argh!</typeparam>
568 /// <remarks><c>M:Mono.DocTest.Generic.MyList`1.UseHelper``2(Mono.DocTest.Generic.MyList{``0}.Helper{``1,``2})</c>.</remarks>
569 public void UseHelper<U,V> (Helper<U,V> helper) {}
571 /// <remarks><c>M:Mono.DocTest.Generic.MyList`1.GetHelper``2</c>.</remarks>
572 /// <returns><see langword="null" />.</returns>
573 public Helper<U,V> GetHelper<U,V> () {return null;}
575 /// <remarks><c>M:Mono.DocTest.MyList`1.System#Collections#GetEnumerator</c>.</remarks>
576 IEnumerator IEnumerable.GetEnumerator () {return null;}
578 /// <remarks><c>M:Mono.DocTest.MyList`1.GetEnumerator</c>.</remarks>
579 public IEnumerator<int[]> GetEnumerator () {return null;}
582 /// <typeparam name="T">T generic param</typeparam>
583 /// <remarks><c>T:Mono.DocTest.IFoo`1</c>.</remarks>
584 public interface IFoo<T> {
585 /// <typeparam name="U">U generic param</typeparam>
586 /// <remarks><c>T:Mono.DocTest.IFoo`1.Method``1(`0,``0)</c>.</remarks>
587 T Method <U> (T t, U u);
590 /// <typeparam name="A">Ako generic param</typeparam>
591 /// <typeparam name="B">Bko generic param</typeparam>
592 /// <remarks><c>T:Mono.DocTest.MyList`2</c>.</remarks>
593 public class MyList<A,B> : GenericBase<Dictionary<A,B>>, IEnumerable<A>,
594 IEnumerator<A>, ICollection<A>, IFoo<A>
595 where A : class, IList<B>, new()
601 object IEnumerator.Current {get {return null;}}
603 /// <remarks><c>M:Mono.DocTest.MyList`2.MoveNext</c>.</remarks>
604 /// <returns><see cref="T:System.Boolean" /></returns>
605 public bool MoveNext () {return false;}
607 /// <remarks><c>M:Mono.DocTest.MyList`2.Reset</c>.</remarks>
608 public void Reset () {}
611 /// <remarks><c>M:Mono.DocTest.MyList`2.Dispose</c>.</remarks>
612 public void Dispose () {}
615 /// <remarks><c>P:Mono.DocTest.MyList`2.Current</c>.</remarks>
616 /// <value>The current value.</value>
617 public A Current {get {return default(A);}}
618 /// <remarks><c>P:Mono.DocTest.MyList`2.Current</c>.</remarks>
619 /// <value>The current value.</value>
620 A IEnumerator<A>.Current {get {return default(A);}}
623 /// <remarks><c>M:Mono.DocTest.MyList`2.System#Collections#GetEnumerator</c>.</remarks>
624 IEnumerator IEnumerable.GetEnumerator () {return this;}
627 /// <remarks><c>M:Mono.DocTest.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator</c>.</remarks>
628 /// <returns>A <see cref="T:System.Collections.Generic.IEnumerator{`0}" />.</returns>
629 IEnumerator<A> IEnumerable<A>.GetEnumerator () {return this;}
630 /// <remarks><c>M:Mono.DocTest.MyList`2.GetEnumerator</c>.</remarks>
631 /// <returns>A <see cref="T:System.Collections.Generic.List{`0}.Enumerator" />.</returns>
632 public List<A>.Enumerator GetEnumerator () {return new List<A>.Enumerator ();}
635 /// <remarks><c>P:Mono.DocTest.MyList`2.Count</c>.</remarks>
636 /// <value>A <see cref="T:System.Int32" />.</value>
637 public int Count {get {return 0;}}
638 /// <remarks><c>P:Mono.DocTest.MyList`2.System#Collections#Generic#ICollection{A}#IsReadOnly</c>.</remarks>
639 /// <value>A <see cref="T:System.Boolean" />.</value>
640 bool ICollection<A>.IsReadOnly {get {return false;}}
641 /// <param name="item">The item to add.</param>
642 /// <remarks><c>M:Mono.DocTest.MyList`2.System#Collections#Generic#ICollection{A}#Add(`0)</c>.</remarks>
643 void ICollection<A>.Add (A item) {}
644 /// <remarks><c>M:Mono.DocTest.MyList`2.System#Collections#Generic#ICollection{A}#Clear</c>.</remarks>
645 void ICollection<A>.Clear () {}
646 /// <param name="item">The item to check for</param>
647 /// <remarks><c>M:Mono.DocTest.MyList`2.System#Collections#Generic#ICollection{A}.Contains(`0)</c>.</remarks>
648 /// <returns>A <see cref="T:System.Boolean" /> instance (<see langword="false" />).</returns>
649 bool ICollection<A>.Contains (A item) {return false;}
650 /// <param name="array">Where to copy elements to</param>
651 /// <param name="arrayIndex">Where to start copyingto</param>
652 /// <remarks><c>M:Mono.DocTest.MyList`2.CopyTo(`0[],System.Int32)</c>.</remarks>
653 public void CopyTo (A[] array, int arrayIndex) {}
654 /// <param name="item">the item to remove</param>
655 /// <remarks><c>M:Mono.DocTest.MyList`2.System#Collections#Generic#ICollection{A}#Remove(`0)</c>.</remarks>
656 /// <returns>Whether the item was removed.</returns>
657 bool ICollection<A>.Remove (A item) {return false;}
659 /// <remarks>M:Mono.DocTest.Generic.MyList`2.Foo</remarks>
660 public KeyValuePair<IEnumerable<A>, IEnumerable<B>> Foo ()
662 return new KeyValuePair<IEnumerable<A>, IEnumerable<B>> ();
666 /// <typeparam name="U">U generic param on MyList`2</typeparam>
667 /// <remarks><c>M:Mono.DocTest.Generic.MyList`2.Mono#DocTest#Generic#IFoo{A}#Method``1(`0,``0)</c>.</remarks>
668 A IFoo<A>.Method <U> (A a, U u)