Merge pull request #944 from ermshiperete/bug-novell-496138
[mono.git] / mcs / tests / test-decl-expr-01.cs
1 using System;
2
3 class DeclarationExpression
4 {
5         public static int Main ()
6         {
7                 Out (out int o);
8                 if (o != 3)
9                         return 1;
10
11                 if (Out (out int o1)) {
12                         if (o1 != 3)
13                                 return 2;
14                 }
15
16                 Out (out int o2 = 2);
17                 if (o2 != 3)
18                         return 3;
19
20                 Out (out var o3);
21                 if (o3 != 3)
22                         return 4;
23
24                 Ref (ref int r = 2);
25                 if (r != 7)
26                         return 5;
27
28                 Ref (ref ((var r2 = 3)));
29                 if (r2 != 8)
30                         return 6;
31
32                 Out2 (str: "b", v: out var o5);
33                 if (o5 != 9)
34                         return 7;
35
36                 Out3 (out var o6 = 9m);
37                 if (o6.GetType () != typeof (decimal))
38                         return 8;
39
40                 Console.WriteLine ("ok");
41                 return 0;
42         }
43
44         static bool Out (out int value)
45         {
46                 value = 3;
47                 return true;
48         }
49
50         static bool Out2 (out int v, string str)
51         {
52                 v = 9;
53                 return true;
54         }
55
56         static void Out3<T> (out T t)
57         {
58                 t = default (T);
59         }
60
61         static void Ref (ref int arg)
62         {
63                 arg += 5;
64         }
65 }