1.1 --- a/lib/operator/binary.py Mon Apr 03 00:13:46 2017 +0200
1.2 +++ b/lib/operator/binary.py Mon Apr 03 01:36:47 2017 +0200
1.3 @@ -21,6 +21,7 @@
1.4
1.5 from operator.core import binary_op, is_, is_not
1.6 from native import int_add, int_div, int_mod, int_mul, int_pow, int_sub, \
1.7 + int_lshift, int_rshift, \
1.8 int_and, int_not, int_or, int_xor, \
1.9 is_int
1.10
1.11 @@ -58,6 +59,8 @@
1.12 return not b.__contains__(a)
1.13
1.14 def lshift(a, b):
1.15 + if is_int(a) and is_int(b):
1.16 + return int_lshift(a, b)
1.17 return binary_op(a, b, lambda a: a.__lshift__, lambda b: b.__rlshift__)
1.18
1.19 def mod(a, b):
1.20 @@ -81,6 +84,8 @@
1.21 return binary_op(a, b, lambda a: a.__pow__, lambda b: b.__rpow__)
1.22
1.23 def rshift(a, b):
1.24 + if is_int(a) and is_int(b):
1.25 + return int_rshift(a, b)
1.26 return binary_op(a, b, lambda a: a.__rshift__, lambda b: b.__rrshift__)
1.27
1.28 def sub(a, b):