mirror of
https://github.com/python/cpython.git
synced 2025-07-15 23:35:23 +00:00
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:
parent
d92ae840e9
commit
078151da90
4 changed files with 50 additions and 4 deletions
|
@ -1154,8 +1154,16 @@ parsenumber(struct compiling *co, char *s)
|
|||
#endif
|
||||
if (*end == 'l' || *end == 'L')
|
||||
return PyLong_FromString(s, (char **)0, 0);
|
||||
if (s[0] == '0')
|
||||
if (s[0] == '0') {
|
||||
x = (long) PyOS_strtoul(s, &end, 0);
|
||||
if (x < 0 && errno == 0) {
|
||||
if (PyErr_Warn(PyExc_DeprecationWarning,
|
||||
"hex/oct constants > sys.maxint "
|
||||
"will return positive values "
|
||||
"in Python 2.4 and up") < 0)
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
x = PyOS_strtol(s, &end, 0);
|
||||
if (*end == '\0') {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue