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
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;
}
}