blob: 4706ec63d43ce0656bb4a4e93f90fa4a087d9413 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
using System;
struct MyTypeA
{
short b;
public MyTypeA (short b)
{
this.b = b;
}
public static MyTypeA operator + (MyTypeA a, MyTypeA b)
{
throw new NotSupportedException ();
}
public static bool operator == (MyTypeA a, MyTypeA b)
{
return true;
}
public static bool operator != (MyTypeA a, MyTypeA b)
{
throw new NotSupportedException ();
}
public static bool operator > (MyTypeA a, MyTypeA b)
{
throw new NotSupportedException ();
}
public static bool operator < (MyTypeA a, MyTypeA b)
{
throw new NotSupportedException ();
}
}
struct MyTypeB
{
short b;
public MyTypeB (short b)
{
this.b = b;
}
public static MyTypeB operator + (MyTypeB a, MyTypeB b)
{
return a;
}
public static bool operator == (MyTypeB a, MyTypeB b)
{
return true;
}
public static bool operator != (MyTypeB a, MyTypeB b)
{
return false;
}
public static bool operator > (MyTypeB a, MyTypeB b)
{
return false;
}
public static bool operator < (MyTypeB a, MyTypeB b)
{
return true;
}
public static MyTypeB operator & (MyTypeB a, MyTypeB b)
{
return a;
}
}
class C
{
public static int Main ()
{
MyTypeA? mt = null;
mt = null + mt;
MyTypeA? mt2 = null;
mt2 = mt2 + null;
bool b = mt2 > null;
bool x = mt2 == null;
MyTypeB? bt = null;
bt = bt + bt;
if (bt != null)
return 2;
MyTypeB? b2 = null;
bool bb = b2 == b2;
if (!bb)
return 3;
MyTypeB? b3 = null;
b3 = b3 & b3;
return 0;
}
}
|