Fixes regression caused by 3912066fe1134ba665770723a24c8ea9b4f1aea3 change
authorMarek Safar <marek.safar@gmail.com>
Thu, 3 Oct 2013 13:07:13 +0000 (09:07 -0400)
committerMarek Safar <marek.safar@gmail.com>
Thu, 3 Oct 2013 13:07:45 +0000 (09:07 -0400)
mcs/mcs/anonymous.cs
mcs/tests/gtest-iter-31.cs [new file with mode: 0644]
mcs/tests/ver-il-net_4_5.xml

index 25fd1675bf445de538a0f262a57f78f0d253e491..c10e8e22587988d70ad9b8de1d88028c58f382a1 100644 (file)
@@ -1698,13 +1698,12 @@ namespace Mono.CSharp {
                                                        // use ldftn on non-boxed instances either to share mutated state
                                                        //
                                                        parent = sm_parent.Parent.PartialContainer;
-                                               }
-                                       } else {
-                                               //
-                                               // For iterators we can host everything in one class
-                                               //
-                                               if (sm is IteratorStorey)
+                                               } else if (sm is IteratorStorey) {
+                                                       //
+                                                       // For iterators we can host everything in one class
+                                                       //
                                                        parent = storey = sm;
+                                               }
                                        }
                                }
 
diff --git a/mcs/tests/gtest-iter-31.cs b/mcs/tests/gtest-iter-31.cs
new file mode 100644 (file)
index 0000000..5bd2ea0
--- /dev/null
@@ -0,0 +1,31 @@
+using System.Collections.Generic;
+using System.Linq;
+
+class B
+{
+       public object Foo (object obj)
+       {
+               return null;
+       }
+}
+
+class C
+{
+       B ctx = new B ();
+
+       public static void Main ()
+       {
+               foreach (var c in new C ().Test ()) {                   
+               }
+       }
+
+       IEnumerable<ushort> Test ()
+       {
+               string[] s = new[] { "a", "b", "c" };
+
+               var m = s.Select (l => ctx.Foo (l)).ToArray ();
+
+               yield break;
+       }
+}
+
index c3967fbe91ba46243d1c5b065cb655e82855022f..86c0615e7b7350801c72c7df67d80893441dc9e7 100644 (file)
       <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
         <size>40</size>\r
       </method>\r
-      <method name="Void &lt;Test&gt;m__0()" attrs="129">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>57</size>\r
+      </method>\r
     </type>\r
-    <type name="M+&lt;Test&gt;c__AnonStorey1">\r
+    <type name="M+&lt;Test&gt;c__Iterator0+&lt;Test&gt;c__AnonStorey1">\r
       <method name="Void &lt;&gt;m__1()" attrs="131">\r
         <size>24</size>\r
       </method>\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="gtest-iter-31.cs">\r
+    <type name="B">\r
+      <method name="System.Object Foo(System.Object)" attrs="134">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>62</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.UInt16] Test()" attrs="129">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="UInt16 System.Collections.Generic.IEnumerator&lt;ushort&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Boolean MoveNext()" attrs="486">\r
+        <size>81</size>\r
+      </method>\r
+      <method name="Void Dispose()" attrs="486">\r
+        <size>1</size>\r
+      </method>\r
+      <method name="Void Reset()" attrs="486">\r
+        <size>6</size>\r
+      </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.UInt16] System.Collections.Generic.IEnumerable&lt;ushort&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+      <method name="System.Object &lt;&gt;m__0(System.String)" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="gtest-lambda-01.cs">\r
     <type name="IntFunc">\r
       <method name="Int32 Invoke(Int32)" attrs="454">\r