Implement stage B0 of PEP 237: add warnings for operations that

currently return inconsistent results for ints and longs; in
particular: hex/oct/%u/%o/%x/%X of negative short ints, and x<<n that
either loses bits or changes sign.  (No warnings for repr() of a long,
though that will also change to lose the trailing 'L' eventually.)

This introduces some warnings in the test suite; I'll take care of
those later.
This commit is contained in:
Guido van Rossum 2002-08-11 04:24:12 +00:00
parent d92ae840e9
commit 078151da90
4 changed files with 50 additions and 4 deletions

View file

@ -3311,6 +3311,12 @@ formatint(char *buf, size_t buflen, int flags,
PyErr_SetString(PyExc_TypeError, "int argument required");
return -1;
}
if (x < 0 && type != 'd' && type != 'i') {
if (PyErr_Warn(PyExc_DeprecationWarning,
"%u/%o/%x/%X of negative int will return "
"a signed string in Python 2.4 and up") < 0)
return -1;
}
if (prec < 0)
prec = 1;