Restore id-buffer when after probing async keyword. Fixes #6037
authorMarek Safar <marek.safar@gmail.com>
Mon, 9 Jul 2012 15:25:55 +0000 (16:25 +0100)
committerMarek Safar <marek.safar@gmail.com>
Mon, 9 Jul 2012 15:57:24 +0000 (16:57 +0100)
mcs/mcs/cs-tokenizer.cs
mcs/tests/test-async-22.cs
mcs/tests/ver-il-net_4_5.xml

index e57257ddf75ba3ab0151e38983bf1f3035242c22..165007d40f1f081f4d43d4817b00d36bcfc951ff 100644 (file)
@@ -827,11 +827,13 @@ namespace Mono.CSharp
                                                PushPosition ();
                                                xtoken ();
                                                if (xtoken () != Token.ARROW)
-                                                       res = -1;
+                                                       goto default;
 
                                                PopPosition ();
                                                break;
                                        default:
+                                               // peek_token could overwrite id_buffer
+                                               id_builder [0] = 'a'; id_builder [1] = 's'; id_builder [2] = 'y'; id_builder [3] = 'n'; id_builder [4] = 'c';
                                                res = -1;
                                                break;
                                        }
index 393c76c497f6faa223e9e69b915d600a5a961fe6..079fb813a045ea10d30f676642f90abaed25bd8e 100644 (file)
@@ -38,6 +38,20 @@ class B
        }
 }
 
+class C
+{
+       static void Test (bool async)
+       {
+               var a = async ? Prop : 2;
+       }
+
+       static int Prop {
+               get {
+                       return 3;
+               }
+       }
+}
+
 class async
 {
        async (async arg)
index 2e2de11607582e06cb4d8eb140e720c105113756..67ac72aebb8a3ffe2f3169181c05f6c506d0d349 100644 (file)
         <size>13</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="Void Test(Boolean)" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="Int32 get_Prop()" attrs="2193">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-23.cs">\r
     <type name="MyContext">\r