--- /dev/null
+using System;
+using System.Reflection;
+
+// Delegate Cache
+class C<T>
+{
+ static Func<T> XX ()
+ {
+ System.Func<T> t = () => default (T);
+ return t;
+ }
+}
+
+// Delegate Cache
+class C2<T>
+{
+ static Func<C<T>> XX ()
+ {
+ System.Func<C<T>> t = () => default (C<T>);
+ return t;
+ }
+}
+
+// No delegate cache
+class N1
+{
+ static Func<T> XX<T> ()
+ {
+ System.Func<T> t = () => default (T);
+ return t;
+ }
+}
+
+public class Test
+{
+ public static int Main ()
+ {
+ var t = typeof (C<>);
+ if (t.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static).Length != 1)
+ return 1;
+
+ t = typeof (C2<>);
+ if (t.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static).Length != 1)
+ return 1;
+
+ t = typeof (N1);
+ if (t.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static).Length != 0)
+ return 1;
+
+ Console.WriteLine ("OK");
+ return 0;
+ }
+}
<size>7</size>
</method>
<method name="T`1[X] M[X]()">
- <size>30</size>
+ <size>13</size>
</method>
<method name="T`1[System.Int64] N()">
<size>30</size>
<size>7</size>
</method>
<method name="X+ModuleBinder`1[TDelegate] CreateMethodUnscoped[TDelegate]()">
- <size>30</size>
+ <size>13</size>
</method>
<method name="Void Main()">
<size>1</size>
<size>10</size>
</method>
<method name="Void Test2[T]()">
- <size>36</size>
+ <size>19</size>
</method>
<method name="Void Main()">
<size>100</size>
<size>7</size>
</method>
<method name="System.Converter`2[TSource,TDest] GetUpcaster[TSource,TDest]()">
- <size>30</size>
+ <size>13</size>
</method>
<method name="System.Converter`2[TSource,TDest] GetDowncaster[TSource,TDest]()">
- <size>30</size>
+ <size>13</size>
</method>
<method name="Void Main()">
<size>1</size>
</method>
</type>
</test>
+ <test name="gtest-anon-35.cs">
+ <type name="C`1[T]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ <method name="System.Func`1[T] XX()">
+ <size>32</size>
+ </method>
+ <method name="T <XX>m__0()">
+ <size>12</size>
+ </method>
+ </type>
+ <type name="C2`1[T]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ <method name="System.Func`1[C`1[T]] XX()">
+ <size>32</size>
+ </method>
+ <method name="C`1[T] <XX>m__1()">
+ <size>4</size>
+ </method>
+ </type>
+ <type name="N1">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ <method name="System.Func`1[T] XX[T]()">
+ <size>15</size>
+ </method>
+ <method name="T <XX>m__2[T]()">
+ <size>12</size>
+ </method>
+ </type>
+ <type name="Test">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ <method name="Int32 Main()">
+ <size>98</size>
+ </method>
+ </type>
+ </test>
<test name="gtest-anon-4.cs">
<type name="Test">
<method name="Void .ctor()">
</method>
</type>
</test>
+ <test name="gtest-iter-03.cs">
+ <type name="Test">
+ <method name="Void .ctor()">
+ <size>18</size>
+ </method>
+ <method name="IEnumerable`1 Annotations[T]()">
+ <size>23</size>
+ </method>
+ <method name="IEnumerable`1 Annotations(System.Type)">
+ <size>30</size>
+ </method>
+ <method name="Void Main()">
+ <size>14</size>
+ </method>
+ </type>
+ <type name="Test+<Annotations>c__Iterator0`1[T]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ <method name="T System.Collections.Generic.IEnumerator`1[T].get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>12</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>39</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable`1[T].GetEnumerator()">
+ <size>39</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>194</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>60</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ </type>
+ <type name="Test+<Annotations>c__Iterator1">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.Generic.IEnumerator`1[[System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].get_Current()">
+ <size>7</size>
+ </method>
+ <method name="System.Object System.Collections.IEnumerator.get_Current()">
+ <size>12</size>
+ </method>
+ <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()">
+ <size>53</size>
+ </method>
+ <method name="IEnumerator`1 System.Collections.Generic.IEnumerable`1[[System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].GetEnumerator()">
+ <size>53</size>
+ </method>
+ <method name="Boolean MoveNext()">
+ <size>213</size>
+ </method>
+ <method name="Void Dispose()">
+ <size>51</size>
+ </method>
+ <method name="Void Reset()">
+ <size>6</size>
+ </method>
+ </type>
+ </test>
<test name="gtest-linq-01.cs">
<type name="from.ITest">
<method name="Int32 get_Id()">
<size>7</size>
</method>
<method name="Void Foo[T]()">
- <size>31</size>
+ <size>14</size>
</method>
<method name="Void Main()">
<size>1</size>