[jit] Fix the saving of the 'cfg->ret_var_set' flag when inlining, it was set to...
[mono.git] / mcs / tests / dtest-016.cs
index efeb1a81683dae3f1d23b179481c4689eca2cdcc..4ad76120c013dc11e06a8b7ea57442ecc868cc53 100644 (file)
@@ -25,6 +25,43 @@ public class C
        public void Method_B (ref dynamic i)
        {
        }
+       
+       public static int M (string a, string b)
+       {
+               return 5;
+       }
+       
+       public static int M (ref object o, out dynamic d)
+       {
+               d = null;
+               return 1;
+       }
+}
+
+class D
+{
+       public static int Foo (dynamic d)
+       {
+               return 1;
+       }
+
+       public static int Foo (params object[] o)
+       {
+               return 2;
+       }
+}
+
+class E
+{
+       public static int Foo (int i, dynamic d)
+       {
+               return 1;
+       }
+
+       public static int Foo (double d, object i)
+       {
+               return 2;
+       }
 }
 
 class Program
@@ -39,21 +76,48 @@ class Program
                d = null;
        }
        
+       static int DynParams (int a, int b, params int[] arr)
+       {
+               return arr [1] + b;
+       }
+       
        void TestErrorVersions ()
        {
                var c = new C ();
                dynamic d = null;
                c.Method_A (d);
-               c.Method_A (d); 
+               c.Method_B (d); 
        }
 
-       static int Main ()
+       public static int Main ()
        {
                object o;
                DynOut (out o);
 
                dynamic d = null;
                DynRef (ref d);
+               
+               dynamic d1 = 1, d2;
+               
+               // This should not involve runtime binder
+               if (C.M (ref d1, out d2) != 1)
+                       return 1;
+               
+               dynamic d3 = 5;
+               dynamic d4 = -9;
+               if (DynParams (1, 2, d3, d4) != -7)
+                       return 2;
+
+               if (DynParams (1, 2, 3, d4) != -7)
+                       return 3;
+               
+               d = 44;
+               if (D.Foo (d) != 1)
+                       return 4;
+
+               if (E.Foo (0, 0) != 1)
+                       return 5;
+               
                return 0;
        }
 }