[mcs] Better detection of null operator inside conditional expression. Fixes #57232
authorMarek Safar <marek.safar@gmail.com>
Wed, 7 Jun 2017 16:00:00 +0000 (18:00 +0200)
committerMarek Safar <marek.safar@gmail.com>
Wed, 7 Jun 2017 16:01:00 +0000 (18:01 +0200)
mcs/mcs/cs-tokenizer.cs
mcs/tests/gtest-409.cs
mcs/tests/ver-il-net_4_x.xml

index 505173cb4f9e10a70e72432bae7cd9e4bcf323b3..1be3309b1bfdd611d404408e743e0414f81f2860 100644 (file)
@@ -1325,7 +1325,8 @@ namespace Mono.CSharp
                        }
 
                        if (d == '.') {
-                               return Token.INTERR_OPERATOR;
+                               d = reader.Peek ();
+                               return d >= '0' && d <= '9' ? Token.INTERR : Token.INTERR_OPERATOR;
                        }
 
                        if (d != ' ') {
index d8fee033830cf1a65ea14b44a462ef8c0dc6eb77..8db59d7e48d63650f38af54129943c59971b9e47 100644 (file)
@@ -170,6 +170,11 @@ public class ConditionalParsing
                var t = (Int32)sbyte.MaxValue;
        }
 
+       void Test_22 (bool args)
+       {
+               var x = args ?.2f : -.2f;
+       }
+
        static void Helper<T> (T arg)
        {
        }
index e2b6cd90558c5413dae4becaebfe014335ce874d..fe7d9733555ec7a953d5e7666a97be586fdccfdf 100644 (file)
       <method name="Void Test_21()" attrs="129">
         <size>5</size>
       </method>
+      <method name="Void Test_22(Boolean)" attrs="129">
+        <size>24</size>
+      </method>
     </type>
   </test>
   <test name="gtest-410.cs">