Bug 15572. Lookup KnownTypeCollection element types in MSSimpleNamespace
[mono.git] / mcs / tests / dtest-016.cs
index a9bac7ee28aacd7529af36efeae0ebf14dab3329..4ad76120c013dc11e06a8b7ea57442ecc868cc53 100644 (file)
@@ -16,6 +16,54 @@ class Bar : Foo
        }
 }
 
+public class C
+{
+       public void Method_A (ref int i)
+       {
+       }
+
+       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
 {
        static void DynOut (out dynamic d)
@@ -27,14 +75,49 @@ 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_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;
        }
 }