2 using System
.Threading
.Tasks
;
3 using System
.Linq
.Expressions
;
5 public static class Program
7 public delegate void DelegateVoid (int arg
);
8 public delegate int DelegateInt (string arg
);
10 public static int Main ()
20 DecimalRule (() => (byte) 1);
24 static void TT (Task
<string> a
)
28 static void TT (Task
<object> b
)
30 throw new ApplicationException ("wrong overload");
33 static void NN (sbyte a
)
37 static void NN (uint? b
)
39 throw new ApplicationException ("wrong overload");
42 static void NN2 (sbyte? a
)
46 static void NN2 (uint? b
)
48 throw new ApplicationException ("wrong overload");
51 public static void Bar (int arg
)
55 public static int Bar (string arg
)
60 public static void Foo (DelegateVoid input
)
62 throw new ApplicationException ("wrong overload");
65 public static void Foo (DelegateInt input
)
69 static void Complex (Expression
<Func
<Task
<short>>> arg
)
73 static void Complex (Expression
<Func
<Task
<ulong>>> arg
)
75 throw new ApplicationException ("wrong overload");
78 static void MM (double f
)
82 static void MM (double? f
)
84 throw new ApplicationException ("wrong overload");
87 static void DecimalRule (Func
<int> i
)
91 static void DecimalRule (Func
<decimal?> i
)
93 throw new ApplicationException ("wrong overload");