Merge pull request #3973 from mono/small-perf
[mono.git] / mcs / tests / gtest-linq-01.cs
index 286f712f1c865a55e2be83d271d166922e356402..e6e8ec671f978ef28a953c0b8b83e12e87702f4d 100644 (file)
@@ -1,5 +1,3 @@
-// Compiler options: -langversion:linq
-
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -13,12 +11,12 @@ namespace from
 
        class C
        {
-               // This is pure grammar test
+               // This is pure grammar/parser test
                public static void Main ()
                {
                        int[] i2 = new int [] { 0, 1 };
                        int[] i_b = new int [] { 0, 1 };
-                       ITest[] join_test = null;
+                       ITest[] join_test = new ITest[0];
                        
                        IEnumerable<int> e;
                        IEnumerable<IGrouping<int,int>> g;
@@ -61,6 +59,20 @@ namespace from
                                from i in i2 group i by 2 into i9
                                from i in i2 group i by 2 into i9
                                select i9;
+                               
+                       // NESTED
+                       var e3 = from a in
+                                       from b in i2
+                                       select b
+                               orderby a
+                               select a;
+                               
+                       var e4 = from i in
+                                       from x in i2
+                                       select x
+                               let l = from x2 in i2 select x2
+                               let l2 = 50
+                               select 1;
 
                        int from = 0;
                        bool let = false;
@@ -69,6 +81,13 @@ namespace from
                        //object o = (object)from i in i2 select i;
                }
                
+               void Foo (int from, bool where)
+               {
+                       int Foo = 0;
+                       if (from < Foo) // This tests generics micro-parser awareness
+                               return;
+               }
+               
                int foo;
                void Do (string[] args)
                {
@@ -76,4 +95,34 @@ namespace from
                        Console.WriteLine (args [from]);
                }               
        }
+       
+       class D
+       {
+               public bool check (object from, object to)
+               {
+                       if (from is int && to is int) return true;
+                               return false;
+               }
+       }
+}
+
+namespace FromProblems2
+{
+       class from
+       {
+       }
+       
+       class C
+       {
+               void M1 ()
+               {
+                       from local = new from ();
+               }
+               
+               from M2 ()
+               {
+                       return null;
+               }
+       }
 }
+