Author: stian
Branch: math-improvements
Changeset: r93092:e6c9af023bc5
Date: 2017-11-20 14:19 +0100
http://bitbucket.org/pypy/pypy/changeset/e6c9af023bc5/

Log:    Test and fix for int rbinop overflow to long, also add a deeper test
        for int_floordiv

diff --git a/pypy/objspace/std/intobject.py b/pypy/objspace/std/intobject.py
--- a/pypy/objspace/std/intobject.py
+++ b/pypy/objspace/std/intobject.py
@@ -589,7 +589,7 @@
                 try:
                     return func(space, y, x)
                 except OverflowError:
-                    return ovf2long(space, y, x, w_other)
+                    return ovf2long(space, y, x, self)
             else:
                 return func(space, y, x)
 
diff --git a/pypy/objspace/std/test/test_intobject.py 
b/pypy/objspace/std/test/test_intobject.py
--- a/pypy/objspace/std/test/test_intobject.py
+++ b/pypy/objspace/std/test/test_intobject.py
@@ -613,6 +613,9 @@
         assert type(x) is int
         assert str(x) == "0"
 
+    def test_rbinop_overflow(self):
+        x = int(321)
+        assert x.__rlshift__(333) == 
1422567365923326114875084456308921708325401211889530744784729710809598337369906606315292749899759616L
 
 class AppTestIntShortcut(AppTestInt):
     spaceconfig = {"objspace.std.intshortcut": True}
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
@@ -70,6 +70,15 @@
         r2 = r.int_floordiv(10)
         assert r2.tolong() == 100L
 
+        for op1 in gen_signs(long_vals):
+            for op2 in gen_signs(long_vals):
+                if not op2 or op2 >= (1 << SHIFT) or op2 <= -(1 << SHIFT):
+                    continue
+                rl_op1 = rbigint.fromlong(op1)
+                r1 = rl_op1.int_floordiv(op2)
+                r2 = op1 // op2
+                assert r1.tolong() == r2
+                
         assert py.test.raises(ZeroDivisionError, r.int_floordiv, 0)
 
         # Error pointed out by Armin Rigo
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to