[mcs] Recognize await as simple name in type context
authorMarek Safar <marek.safar@gmail.com>
Mon, 23 Jun 2014 13:29:16 +0000 (15:29 +0200)
committerMarek Safar <marek.safar@gmail.com>
Tue, 24 Jun 2014 12:20:15 +0000 (14:20 +0200)
mcs/mcs/cs-parser.jay
mcs/tests/test-async-22.cs
mcs/tests/ver-il-net_4_5.xml

index f93324f30602ca2f956eff102b7674a76df37471..e81ba26d18c5a98e8e07b13ecbd264c13d462b98 100644 (file)
@@ -4166,6 +4166,16 @@ additive_expression
 
                $$ = new Is ((Expression) $1, null, GetLocation ($2));
          }
+       | AWAIT IS type
+         {
+               var lt = (LocatedToken) $1;
+               $$ = new Is (new SimpleName (lt.Value, lt.Location), (Expression) $3, GetLocation ($2));
+         }
+       | AWAIT AS type
+         {
+               var lt = (LocatedToken) $1;
+               $$ = new As (new SimpleName (lt.Value, lt.Location), (Expression) $3, GetLocation ($2));
+         }
        ;
 
 shift_expression
index ca6e1faf90c65423529f93a7fb11be1d694ed35c..e715d1a4598cd3d4fe5d26a5e90624e99bd2f113 100644 (file)
@@ -174,4 +174,13 @@ namespace AwaitNS
                        var l = await.Length;                   
                }
        }
+
+       class TypeChecks
+       {
+               static void M (object await)
+               {
+                       var b = await is Exception; 
+                       var c = await as Exception;
+               }
+       }
 }
index 4df05435ae4a79e700ffe895e88da740a1d975a7..6b96d472d903c6640208987fe45336aef0a1c330 100644 (file)
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="AwaitNS.TypeChecks">\r
+      <method name="Void M(System.Object)" attrs="145">\r
+        <size>19</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