diff options
author | Guido van Rossum <guido@python.org> | 2002-08-11 04:24:12 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2002-08-11 04:24:12 (GMT) |
commit | 078151da901bebce6eb232d958fbbb1e5ced4399 (patch) | |
tree | d25483ba545d58138518591645e60caa20a7262b /Objects/stringobject.c | |
parent | d92ae840e940db2fc8e9ec6293fe22dbb73f4514 (diff) | |
download | cpython-078151da901bebce6eb232d958fbbb1e5ced4399.zip cpython-078151da901bebce6eb232d958fbbb1e5ced4399.tar.gz cpython-078151da901bebce6eb232d958fbbb1e5ced4399.tar.bz2 |
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.
Diffstat (limited to 'Objects/stringobject.c')
-rw-r--r-- | Objects/stringobject.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 1d5277c..1bbd201 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -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; |