@@ -50,31 +50,58 @@ public OperableObject(int num)
5050 {
5151 return new OperableObject ( a . Num - b . Num ) ;
5252 }
53+ public static OperableObject operator - ( OperableObject a , int b )
54+ {
55+ return new OperableObject ( a . Num - b ) ;
56+ }
5357
5458 public static OperableObject operator * ( OperableObject a , OperableObject b )
5559 {
5660 return new OperableObject ( a . Num * b . Num ) ;
5761 }
62+ public static OperableObject operator * ( OperableObject a , int b )
63+ {
64+ return new OperableObject ( a . Num * b ) ;
65+ }
5866
5967 public static OperableObject operator / ( OperableObject a , OperableObject b )
6068 {
6169 return new OperableObject ( a . Num / b . Num ) ;
6270 }
71+ public static OperableObject operator / ( OperableObject a , int b )
72+ {
73+ return new OperableObject ( a . Num / b ) ;
74+ }
75+
6376
6477 public static OperableObject operator & ( OperableObject a , OperableObject b )
6578 {
6679 return new OperableObject ( a . Num & b . Num ) ;
6780 }
81+ public static OperableObject operator & ( OperableObject a , int b )
82+ {
83+ return new OperableObject ( a . Num & b ) ;
84+ }
85+
6886
6987 public static OperableObject operator | ( OperableObject a , OperableObject b )
7088 {
7189 return new OperableObject ( a . Num | b . Num ) ;
7290 }
91+ public static OperableObject operator | ( OperableObject a , int b )
92+ {
93+ return new OperableObject ( a . Num | b ) ;
94+ }
95+
7396
7497 public static OperableObject operator ^ ( OperableObject a , OperableObject b )
7598 {
7699 return new OperableObject ( a . Num ^ b . Num ) ;
77100 }
101+ public static OperableObject operator ^ ( OperableObject a , int b )
102+ {
103+ return new OperableObject ( a . Num ^ b ) ;
104+ }
78105
79106 public static OperableObject operator << ( OperableObject a , int offset )
80107 {
@@ -134,10 +161,27 @@ public void ForwardOperatorOverloads()
134161from { module } import *
135162cls = { name }
136163a = cls(2)
137- b = cls(10)
164+ b = 10
165+ c = a + b
166+ assert c.Num == a.Num + b
138167
139- c = a + b.Num
140- assert c.Num == a.Num + b.Num
168+ c = a - b
169+ assert c.Num == a.Num - b
170+
171+ c = a * b
172+ assert c.Num == a.Num * b
173+
174+ c = a / b
175+ assert c.Num == a.Num // b
176+
177+ c = a & b
178+ assert c.Num == a.Num & b
179+
180+ c = a | b
181+ assert c.Num == a.Num | b
182+
183+ c = a ^ b
184+ assert c.Num == a.Num ^ b
141185" ) ;
142186 }
143187 [ Test ]
0 commit comments