Author: Carl Friedrich Bolz-Tereick <[email protected]>
Branch:
Changeset: r93752:a52fa839d674
Date: 2018-02-04 13:50 +0100
http://bitbucket.org/pypy/pypy/changeset/a52fa839d674/
Log: improve coverage of bitwise operators
diff --git a/rpython/rlib/rbigint.py b/rpython/rlib/rbigint.py
--- a/rpython/rlib/rbigint.py
+++ b/rpython/rlib/rbigint.py
@@ -2548,6 +2548,8 @@
maska ^= MASK
maskb ^= MASK
negz = -1
+ else:
+ assert 0, "unreachable"
# JRH: The original logic here was to allocate the result value (z)
# as the longer of the two operands. However, there are some cases
diff --git a/rpython/rlib/test/test_rbigint.py
b/rpython/rlib/test/test_rbigint.py
--- a/rpython/rlib/test/test_rbigint.py
+++ b/rpython/rlib/test/test_rbigint.py
@@ -588,8 +588,8 @@
def test_bitwise(self):
for x in gen_signs(long_vals):
- for y in gen_signs([0, 1, 5, 11, 42, 43, 3 ** 30, 3 ** 31]):
- lx = rbigint.fromlong(x)
+ lx = rbigint.fromlong(x)
+ for y in gen_signs(long_vals):
ly = rbigint.fromlong(y)
for mod in "xor and_ or_".split():
res1 = getattr(lx, mod)(ly).tolong()
@@ -597,11 +597,9 @@
assert res1 == res2
def test_int_bitwise(self):
- for x in gen_signs([0, 1, 5, 11, 42, 43, 2 ** 30]):
- for y in gen_signs([0, 1, 5, 11, 42, 43, 3 ** 30, 2 ** 31]):
- if y != intmask(y):
- continue # skip 'y' too large for 32-bit
- lx = rbigint.fromlong(x)
+ for x in gen_signs(long_vals):
+ lx = rbigint.fromlong(x)
+ for y in signed_int_vals:
for mod in "xor and_ or_".split():
res1 = getattr(lx, 'int_' + mod)(y).tolong()
res2 = getattr(operator, mod)(x, y)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit