Issue #27792: force int return type for modulo operations involving bools.
This commit is contained in:
parent
2eedc119c2
commit
b820d7f631
|
@ -96,6 +96,13 @@ class BoolTest(unittest.TestCase):
|
|||
self.assertEqual(False/1, 0)
|
||||
self.assertIsNot(False/1, False)
|
||||
|
||||
self.assertEqual(True%1, 0)
|
||||
self.assertIsNot(True%1, False)
|
||||
self.assertEqual(True%2, 1)
|
||||
self.assertIsNot(True%2, True)
|
||||
self.assertEqual(False%1, 0)
|
||||
self.assertIsNot(False%1, False)
|
||||
|
||||
for b in False, True:
|
||||
for i in 0, 1, 2:
|
||||
self.assertEqual(b**i, int(b)**i)
|
||||
|
|
|
@ -10,6 +10,10 @@ What's New in Python 3.6.0 beta 1
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #27792: The modulo operation applied to ``bool`` and other
|
||||
``int`` subclasses now always returns an ``int``. Previously
|
||||
the return type depended on the input values. Patch by Xiang Zhang.
|
||||
|
||||
- Issue #26984: int() now always returns an instance of exact int.
|
||||
|
||||
- Issue #25604: Fix a minor bug in integer true division; this bug could
|
||||
|
|
|
@ -2458,8 +2458,11 @@ long_divrem(PyLongObject *a, PyLongObject *b,
|
|||
*pdiv = (PyLongObject*)PyLong_FromLong(0);
|
||||
if (*pdiv == NULL)
|
||||
return -1;
|
||||
Py_INCREF(a);
|
||||
*prem = (PyLongObject *) a;
|
||||
*prem = (PyLongObject *)long_long((PyObject *)a);
|
||||
if (*prem == NULL) {
|
||||
Py_CLEAR(*pdiv);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
if (size_b == 1) {
|
||||
|
|
Loading…
Reference in New Issue