Merge pull request #4928 from kumpera/ptr_to_struct_intrinsic
[mono.git] / mcs / tests / test-282.cs
1 // Bug #62322.
2 using System;
3
4 public struct integer
5 {
6         private readonly int value;
7
8         public integer (int value)
9         {
10                 this.value = value;
11         }
12
13         public static implicit operator integer (int i)
14         {
15                 return new integer (i);
16         }
17
18         public static implicit operator double (integer i)
19         {
20                 return Convert.ToDouble (i.value);
21         }
22
23         public static integer operator + (integer x, integer y)
24         {
25                 return new integer (x.value + y.value);
26         }
27 }
28
29 class X
30 {
31         public static object Add (integer x, object other)
32         {
33                 if (other is int) return x + ((int) other);
34                 if (other is double) return x + ((double) other);
35                 throw new InvalidOperationException ();
36         }
37
38         public static int Main ()
39         {
40                 integer i = new integer (3);
41                 double d = 4.0;
42
43                 object result = Add (i, d);
44                 if (!(result is double))
45                         return 1;
46
47                 if ((double) result != 7.0)
48                         return 2;
49
50                 return 0;
51         }
52 }